laravel

时间:2018-04-09 02:56:35

标签: php laravel eloquent associate

我有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,所以是的..

2 个答案:

答案 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();