更新外键Laravel一对多关系雄辩

时间:2018-01-28 06:52:11

标签: php laravel laravel-5 foreign-keys laravel-5.5

我有这样的帐户模型:

class Account extends Model
 {  
    public function Contact()
  {
    return $this->hasMany('app\Contact');
  }
  public $fillable = ['account_id'];
}

和这样的联系模式

class Contact extends Model

{
    public function Account()
   {
       return $this->belongsTo('app\Account');
   }
}

和帐户表

  • ID
  • 姓名

和联系人表

  • ID
  • account_id

当我更新帐户时,我想更新联系人表格上的account_id字段。 我使用contact_array varaible

发送与此帐户相关的联系人

我的代码:

 public function update(Request $request, $id)
 {
    $Account = Account::find($id);
    $Account->update($request->all());
    $Account->Contact()->delete(); ###delete all relations
    foreach ($request['contact_array'] as $val){
        $contact=Contact:: find($val);
        $Account->Contact()->save($contact);
    }
}

但是没有任何东西,我测试了这个

foreach ($request['contact_array'] as $val){
     $test=  DB::table('contacts')
     ->where('id', $val)
     ->update(['account_id' => $Account->id]);
}

但不起作用。

1 个答案:

答案 0 :(得分:1)

你可以这样做 -

foreach ($request['contact_array'] as $val){
     $contact=Contact:: find($val);
     $contact->account_id = $Account->id;
     $contact->save();
}
$Account->loadMissing('Contact');