为了更新数据透视表中的单个记录,我使用了updateExistingPivot方法。但是,它将$ id作为第一个参数。例如:

$step->contacts()->updateExistingPivot($id, [
    'completed' => true,
    'run_at' => \Carbon\Carbon::now()->toDateTimeString()
]);

但是,如何一次更新数据透视表中的多个现有行呢?

最佳答案

您可以访问BelongsToMany关系中的allRelatedIds()方法,该方法将返回相关模型ID的集合,该ID出现在针对初始模型的数据透视表中。

然后,foreach将完成这项工作:

$ids = $step->contacts()->allRelatedIds();

foreach ($ids as $id){
    $step->contacts()->updateExistingPivot($id, ['completed' => true]);
}

10-05 23:07