2016-09-30 3 views
0

ПроблемныхLaravel updateExistingPivot с несколькими первичными ключами

Я хочу, чтобы обновить строку в виде сводной таблицы, которые имеют 2 первичных ключи. Но updateExistingPivot хочет только один первичный ключ.

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

Мой DB-таблицы

  • кампании
  • Пользователь
  • Campaign_user (первичные ключи user_id и campaign_id)

Мой вопрос

Должен ли я изменить сводную таблицу, чтобы она имела только 1 первичный ключ с именем id. Или я могу сохранить его с двумя первичными ключами и все еще обновлять его с помощью Eloquent?

ответ

0

Я думаю, что для лучшей практики вы должны добавить идентификатор ключа в вашей Campaign_user таблицы, структура должна:

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)); 
Смежные вопросы