【问题标题】:Laravel updateExistingPivot with multiple primary keysLaravel updateExistingPivot 具有多个主键
【发布时间】:2017-02-09 12:54:37
【问题描述】:

问题

我想更新具有 2 个主键的数据透视表中的一行。但是 updateExistingPivot 只需要一个主键。

$user = App\User::find(1);
$user->roles()->updateExistingPivot($roleId, $attributes);

我的数据库表

  • 广告系列
  • 用户
  • Campaign_user(主键是 user_id 和 campaign_id)

我的问题

我是否应该更改我的数据透视表,使其只有 1 个名为 id 的主键。或者我可以使用 2 个主键保留它,并且仍然使用 Eloquent 更新它吗?

【问题讨论】:

    标签: php laravel pivot-table insert-update


    【解决方案1】:

    我认为作为最佳实践,您应该在 Campaign_user 表中添加一个键 ID,结构应该:

    Campaign_user
     id|user_id|campaign_id
    

    在用户模型中

    public function campaign()
    {
        return $this->belongsToMany('Campaign', 'Campaign_user','user_id','campaign_id')->withPivot('extra attribute if any');
    }
    

    在广告系列模型中

    public function users()
    {
        return $this->belongsToMany('User', 'Campaign_user','campaign_id','user_id')->withPivot('extra attribute if any');
    }
    

    现在你的代码是:

    $user = App\User::find($userId);
    $user->campaign()->updateExistingPivot($campaignId, array('any attribute'=>$value));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-30
      • 2012-11-24
      • 2014-12-08
      • 2016-08-10
      • 1970-01-01
      • 2020-03-28
      • 2015-11-13
      • 1970-01-01
      相关资源
      最近更新 更多