【发布时间】:2016-12-24 02:47:36
【问题描述】:
我正在尝试通过遵循互联网上的一些指南来构建我的第一个 Laravel 应用程序,但我觉得我缺少一些明显的东西。这是代码。
错误
Builder.php 第 2450 行中的 BadMethodCallException:调用未定义 方法 Illuminate\Database\Query\Builder::addresses()
用户模型
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Sentinel;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'email', 'password',
];
protected $hidden = [
'password',
'remember_token'
];
public function addresses()
{
return $this->hasMany('App\CustomerAddress');
}
}
客户地址模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class CustomerAddress extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
客户地址控制器
<?php
namespace App\Http\Controllers;
use App\CustomerAddress;
use Illuminate\Http\Request;
class CustomerAddressController extends Controller
{
public function create(Request $request)
{
$address = new CustomerAddress();
$address->address = $request['address'];
$request->user()->addresses()->save($address);
}
}
这段代码后出现错误:
$request->user()->addresses()->save($address);
有什么想法吗?谢谢和欢呼
【问题讨论】:
-
在request->user()->addresses()->save($address)之前需要$address->save();
-
也使用 $request->input('address')
-
customer_address表上也应该有user_id字段
-
您好,感谢您的快速回复。添加 $address->save() 会给出另一条错误消息,并且 customer_address 表中有一个列“字段'user_id'没有默认值(SQL:插入
customer_addresses(address,updated_at,created_at) 值 (asdasd, 2016-12-24 02:54:34, 2016-12-24 02:54:34))”,即使在 CustomerAddress-model 中将“地址”添加到可填充项之后。 -
试试 $request->user()->addresses()->associate($address);让我们看看
标签: php laravel laravel-5 laravel-5.3 sentinel