Laravel多对多同步与附加列



Laravel 7.0版

我有Team模型和User模型,team_has_users表。

team_has_users表具有team_iduser_idrole列。

一个用户可以属于一个具有不同角色的团队。

例如,一个用户可以作为客户和员工属于一个团队。

Team模型中,我设置了这样一个关系。

public function users(){
return $this->belongsToMany(User::class, 'team_has_user', 'team_id', 'user_id')
->withPivot('role');
}

当我将用户连接到团队时,它像这样工作得很好。

$item->users()->attach($request->clients, ['role'=>'client']);
$item->users()->attach($request->employees, ['role'=>'employee']);

但是,当我要同步它们时,我做不到。

我试着搜索,发现了一个类似的syncwithoutDetaching,但它似乎不适合我的情况。team_has_users表格可以是这样的。

team_id    user_id    role
1           1         client
1           1         employee
1           2         client
1           1         other
...

有人能帮我吗?

谢谢!

附加时,您可以在传递时传递额外的数组。

$item->users()->attach($request->clients, ['role'=>'client']);
$item->users()->attach($request->employees, ['role'=>'employee']);

但在同步中,您必须在数组中传递pivot值,我在下面提到了一个例子。

$item->roles()->sync([1 => ['role' => 'client'], 2 => ['role' => 'employee']);

检查文档同步部分,

相关内容

  • 没有找到相关文章

最新更新