为了更新数据透视表中的单个记录,我使用了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]);
}