带有多个主键的Laravel updateExistingPivot [英] Laravel updateExistingPivot with multiple primary keys

查看:110
本文介绍了带有多个主键的Laravel updateExistingPivot的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题

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

I want to update a row in a pivot table that have 2 primary keys. But updateExistingPivot want only a single primary key.

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

我的数据库表

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

我的问题

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

Should I change my pivot table so it only have 1 primary key called id. Or can I keep it with 2 primary keys, and still update it, with Eloquent?

推荐答案

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

I think for best practice you should add a key id in your Campaign_user table, structure should:

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

这篇关于带有多个主键的Laravel updateExistingPivot的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆