提问者:小点点

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


我有这样的账户模型:

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

当我更新帐户时,我想更新contacts表上的account_id字段。我使用contact\u数组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个答案

匿名用户

你可以这样用do

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