我有兩個型號如下第三標識,雄辯belongsToMany與透視列作爲同步
User {
public function param()
{
return $this->belongsToMany(
Models\Param::class, 'param_user_map', 'user_id', 'param_id')
->withPivot('experience', 'param_extra');
}
}
Params {
public function user()
{
return $this->belongsToMany(
Models\User::class, 'param_user_map', 'param_id', 'user_id')
->withPivot('experience', 'param_extra');
}
}
我的映射表,
param_user_map
-param_id
-user_id
-experience
-param_extra
和數據我的工作是什麼樣子,
user_id param_id experience param_extra
51 2 3 param2_1
51 2 3 param2_2
51 3 3 param3_2
當我使用Eloquent同步這個數據時,只保留前兩個中的一個。
有什麼辦法可以將數據與[param_id,user_id,param_extra]同步爲唯一組合。
我試着用,
$table->unique(['param_id','user_id','param_extra']);
和
foreach ($data['param_collection'] as $param) {
$params = [
'experience' => $params['experience'],
'param_extra' => $params['param_extra'],
];
$user->param()->sync([$param['param_id'] => $params]);
}
沒有工作。
任何解決方案?
這個答案可能會幫助你http://stackoverflow.com/a/ 27230803/3551175 – Skysplit
我試過了,在我的情況下,我必須保存具有不同透視值的相同param_id和user_id的兩個條目。 – sudhirk496