我有 2 个模型,一个用户和一个地址。自从我读到它以来,我仍在尝试 Associate()https://laravel.com/docs/5.6/eloquent-relationships#updating-belongs-to-relationships https://laravel.com/docs/5.6/eloquent-relationships#updating-belongs-to-relationships但我在实现它时遇到了一些麻烦,遗憾的是我的视频教程没有涵盖 Associate() 函数。
class User extends Authenticatable
public function address() {
return $this->hasOne('App\Address');
}
class Address extends Model
public function user() {
return $this->belongsTo('App\User');
}
// --web.php--
Route::get('/sample',function(){
$user = User::create(['name'=>'user 1','email'=>'[email protected] /cdn-cgi/l/email-protection',password='']);
$address = Address::create(['name'=>'sample address of user 1']);
$address->user()->associate($user);
});
一切都已保存,但我预计该地址的 user_id 将为 1。相反,该地址的 user_id 被设置为 NULL。 Associate() 不是应该通过自动分配等于父级 ID 的外键来将特定的“belongsTo”模型链接到其父级吗?顺便说一句,我对 PHP 和 Laravel 很陌生,所以是的..
你还需要save
存储值的对象。
As the 文档 https://laravel.com/docs/5.6/eloquent-relationships#inserting-and-updating-related-models says:
属于关系
当更新belongsTo关系时,你可以使用associate
方法。此方法将在子模型上设置外键:
$account = App\Account::find(10);
$user->account()->associate($account);
$user->save();
因此,如您所见,关联后:
$address->user()->associate($user);
你需要保存它:
$address->save();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)