【问题标题】:Update foreign key Laravel one to many relation eloquent更新外键 Laravel 一对多关系 eloquent
【发布时间】:2018-01-28 06:52:11
【问题描述】:

我有这样的帐户模型:

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');
   }
}

和帐户表

  • 身份证
  • 姓名

和联系人表

  • 身份证
  • account_id

当我更新帐户时,我想更新联系人表上的 account_id 字段。 我使用contact_array 变量发送与此帐户相关的联系人

我的代码:

 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]);
}

但不起作用。

【问题讨论】:

  • 您是否要删除所有关系并重新创建关系??
  • @Sohel0415 当然是的

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


【解决方案1】:

你可以这样使用 -

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

【讨论】:

  • 我不想创建新联系人我只想更新 account_id 字段
  • 我的代码是真的。问题很扯淡。我用谷歌浏览器在 phpmyadmin 上测试它。它向我显示空白,但是当我与 firefox 一起使用时,它向我显示 account_id 字段。所以谢谢你的时间
猜你喜欢
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 2021-04-21
  • 2015-04-12
  • 2019-06-13
  • 2017-04-20
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多