Laravel文档说:
您还可以使用ID传递其他中间表值: $ user-> roles() - > sync([1 => [' notes' => true],2,3]);
我想知道是否可以做这样的事情:
$ user-> roles() - > sync([1 => [' notes' => true],1 => [' notes' = > false]]);
我目前正在以略微不同的方式进行上述操作,而Laravel似乎只是用第二个条目覆盖数据透视表中的第一个条目,因此数据透视表看起来像这样:
user role notes
1 1 false
有没有办法使用sync()这样它会将两个值保存在数据透视表中,所以它看起来像这样?
user role notes
1 1 true
1 1 false
如果sync()不能为我这样做,是否有不同的方法来创建所需的结果?
答案 0 :(得分:0)
您可以使用attach()代替:
$user->roles()->attach(1, ['notes' => true]);
$user->roles()->attach(1, ['notes' => false]);
如果要删除以前的值,可以在执行上述操作之前将sync()与空数组一起使用,如下所示:
$user->roles()->sync([]);
$user->roles()->attach(1, ['notes' => true]);
$user->roles()->attach(1, ['notes' => false]);
然后您将获得的结果将是DB中的所需结果:
user role notes
1 1 true
1 1 false