寻找一种方法来说明只应在pivot(中间)表中更新某些值。
做$ group-> courses() - > sync($ courses_year_for_sync);
产生
update `course_group_course` set `year` = ? where `course_id` = ? and `group_id` = ?
但我需要它
update `course_group_course` set `year` = ? where `course_id` = ? and `group_id` = ? and `year` = ?
这用于生成更新值 $ courses_year_for_sync [$ value] = ['年份' => $年];
如果我可以在哪里使用sync,或者告诉模型总是检查年份列,那会很好。
任何想法从哪里开始?
为了检索数据,我使用
$groups = CourseGroup::withCount(['courses' => function($query) use ($year) {$query->where('course_group_course.year', $year);}])//needed to only get the correct year from pivot table
->where('year', $year)
->orderBy('name')
->get();
但是使用同步保存时,所有数据都会更新到给定年份。如果年份不同,则不应更新/修改。
谢谢
更新: 不理想,但我用
修复了问题Capsule::table('course_group_course')
->where('year', $year)
->where('group_id', $group->id)
->delete();
Capsule::table('course_group_course')
->insert($pivot_data);
仍然想知道是否有可能以某种方式改变模型。 谢谢