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);
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
这将$customer->user()
是一种belongsTo
关系.
要做到这一点,你可以先保存用户模型,然后将客户模型保存到它,如:
$user = new User($data);
$user->save();
$customer = new Customer($customerData);
$user->customer()->save($customer);
Run Code Online (Sandbox Code Playgroud)
编辑:可能没有必要先保存用户模型,但我总是这样做,不知道为什么.
据我了解,->associate()
可以在BelongsTo关系上调用onyl.所以,在你的例子中,你可以做到$customer->user()->associate($user)
.但是,为了"关联"您使用的Has*关系->save()
,所以您的代码应该是$user->customer()->save($customer)
归档时间: |
|
查看次数: |
22944 次 |
最近记录: |