我有2个型号,一个用户和一个地址。我仍然在试用关联(),因为我在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'=>'user@laravel.com',password='']);
$address = Address::create(['name'=>'sample address of user 1']);
$address->user()->associate($user);
});
一切都已保存,但我希望地址的user_id为1.相反,地址的user_id设置为NULL。不是关联()假设链接特定的'属于''通过自动分配等于父ID的外键来为其父级建模?顺便说一句,我是非常新的PHP和Laravel,所以是的..
答案 0 :(得分:0)
您的地址模型需要具有belongsTo用户关系。 例如:
if..else if..else
注意:您需要确保您有外键约束
例如迁移:
switch
答案 1 :(得分:0)
您仍然需要save
对象来存储值。
正如documentation所说:
属于关系
更新belongsTo关系时,您可以使用该关联 方法。此方法将在子模型上设置外键:
$account = App\Account::find(10); $user->account()->associate($account); $user->save();
所以,正如你所看到的那样:
$address->user()->associate($user);
你需要这样做:
$address->save();