Mat*_*ijn 22 php relational-database relationship laravel eloquent
我不太确定我是否理解Laravel中的关联方法.我理解这个想法,但我似乎无法让它发挥作用.
使用此(蒸馏)代码:
class User
{
    public function customer()
    {
        return $this->hasOne('Customer');
    }
}
class Customer
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}
$user = new User($data);
$customer = new Customer($customerData);
$user->customer()->associate($customer);
Call to undefined method Illuminate\Database\Query\Builder::associate()当我尝试运行时,我得到了一个.
从我可以阅读的内容来看,我完全按照文档中的说明完成.
我究竟做错了什么?
Dav*_*ker 36
我不得不承认,当我第一次开始使用Laravel时,我不得不一直引用文档的关系,甚至在某些情况下,我也没有完全正确.
为了帮助您,associate()用于更新belongsTo()关系.查看您的代码,返回的类$user->customer()是一个hasOne关系类,并且不会有关联方法.
如果你反过来这样做的话.
$user = new User($data);
$customer = new Customer($customerData);
$customer->user()->associate($user);
$customer->save();
这将$customer->user()是一种belongsTo关系.
要做到这一点,你可以先保存用户模型,然后将客户模型保存到它,如:
$user = new User($data);
$user->save();
$customer = new Customer($customerData);
$user->customer()->save($customer);
编辑:可能没有必要先保存用户模型,但我总是这样做,不知道为什么.
据我了解,->associate()可以在BelongsTo关系上调用onyl.所以,在你的例子中,你可以做到$customer->user()->associate($user).但是,为了"关联"您使用的Has*关系->save(),所以您的代码应该是$user->customer()->save($customer)