eloquent sync()与枢轴列上的其他位置

时间:2018-06-05 18:18:10

标签: eloquent

寻找一种方法来说明只应在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);

仍然想知道是否有可能以某种方式改变模型。 谢谢

0 个答案:

没有答案