Laravel:如何在数据透视表上设置一个属性,取消设置所有其他属性


Laravel: how to set one property on a pivot table, unset all others

我在地点和车站之间建立了多对多关系。一个位置可以有多个指定的桩号,但只能有一个处于活动状态。我有一个透视表(station_location),我在其中使用setActive方法设置is_active属性,但我正在试图找到一种合理的方法,将其中一个设置为活动,将所有其他设置为非活动。

我需要它是可重复使用的,因为我必须在多个地方设置它(不仅仅是从控制器)。我想知道是否有人知道如何做到这一点?

您可以使用如下所示的sync方法

$station->locations()
->sync([1 => ['is_active' => true], 2 => ['is_active' => false], 3 => ['is_active' => false]]);

点击此处了解更多

PS:1,2,3等在传递的数组中是位置id。