我有一个数据透视表,当我必须添加或删除行时,我正在使用同步。问题是我有一个week_day_id,这在必须删除或添加行时很重要。仅当id和week_day_id都匹配时,我才需要同步。
我经常尝试:
$ routine-> exercises()-> detach($ exercisesList);
$ routine-> exercises()-> attach($ exercisesList);
这:
$ routine-> exercises()-> syncWithoutDetaching($ exercisesList);
控制器:
公共函数update(UpdateRoutineRequest $ request,例程$ routine){
// $ routine =例程:: where('user_id',Auth :: guard('api')-> id())-> get();
$this->authorize('update', $routine);
$routine->name = $request->get('name', $routine->name);
$routine->description = $request->get('description', $routine->description);
$exercisesIds = array();
foreach($request->exercises as $exercise) {
$arrayTemp = $exercise['exercise_id'];
array_push($exercisesIds, $arrayTemp);
}
$exercisesList = array_combine($exercisesIds, $request->exercises);
$routine->save();
$routine->exercises()->syncWithoutDetaching($exercisesList);
return fractal()
->item($routine)
->parseIncludes(['user', 'exercises'])
->transformWith(new RoutineTransformer)
->toArray();
}
我期望的是,当我使用同步添加带有练习的新例程时,在控制器中,我需要将其删除或添加它,具体取决于是否添加了练习。本部分工作正常。问题在于数据透视表中的每一行都有一个week_day_id,然后必须与此ID匹配。
现在,如果我添加或删除例程,则不必关心week_day_id。它必须删除或添加所有具有例程ID,exercise_id和week_day_id的练习。希望你明白我的意思。我一直在尝试通过阅读文档找到解决方案,但是我无法自己解决。预先感谢