在急切加载中提供额外的条件,包括比较两列,laravel



我有学生表、个人资料表、科目和数据透视表profile_subject

-students---------{id,profile_id,year}

-profiles---------{id}

-profile_subject--{profile_id,subject_id,年}

-主题---------{id}

我想选择一个 ID 为 5 的学生,以及学生年份的热切负载配置文件和科目。

像这样:

$student = Student::with('profile','profile.subjects')->find(5);

但我也必须插入条件

->wherePivot('year','=','students.year')

那里的某个地方。怎么做? 此查询不会执行工作,因为它将搜索"学生.年份"文学的记录

使用惰性急切加载。此代码不会创建任何其他查询,它将创建与with()相同的查询数量:

$student = Student::find(5);
$sudent->load(['profile', 'profile.subjects' => function ($q) use ($student) {
$q->wherePivot('year', $student->year);
}]);

相关内容

  • 没有找到相关文章

最新更新