我正在使用Laravel 5.7开发学校管理系统。我有两个桌子。
我想要的是通过将 monthly_fees 表与学生结合在一起来选择值为 1 的月通过在学生表上提供条件。为了简单起见。我想以口才的方式进行以下查询。
SELECT * FROM `students`
INNER JOIN `monthly_fees` ON `monthly_fees`.`student_id` = `students`.`id`
WHERE `students`.`class` = 'whatever'
答案 0 :(得分:2)
为什么要全部加入。使用Laravel,您可以按关系表轻松地加载和过滤结果(雄辩的方式):
Students::whereHas('MonthlyFees', function ($query) {
$query->where('months', 1);
})->get();
这样做,您将仅获得“月份”列等于1的学生结果。然后像往常一样简单地在刀片视图中筛选结果。希望这会有所帮助!
答案 1 :(得分:0)
您可以尝试以下查询吗?
DB::select(`students.*`, `monthly_fees.*`)
->from(`students`)
->join(`monthly_fees`, function($join) {
$join->on(`monthly_fees.student_id`, `=`, `students.id`);
})
->where(`students.class`, `=`, 'whatever')
->get();
答案 2 :(得分:0)
雄辩的方法是做类似以下的事情:
Student::with('monthly_fees')->where('class', 'whatever')->get();
这将返回该班级的所有学生及其月费。显然,您显然需要确保在Student
和MonthlyFee
模型上设置了正确的关系。