如何在Laravel中使用Eloquent处理以下查询

时间:2019-02-25 15:27:47

标签: laravel eloquent

我正在使用Laravel 5.7开发学校管理系统。我有两个桌子。

  1. 学生
  2. monthly_fees

我想要的是通过将 monthly_fees 表与学生结合在一起来选择值为 1 通过在学生表上提供条件。为了简单起见。我想以口才的方式进行以下查询。

SELECT * FROM `students` 
INNER JOIN `monthly_fees` ON `monthly_fees`.`student_id` = `students`.`id` 
WHERE `students`.`class` = 'whatever'

3 个答案:

答案 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();

这将返回该班级的所有学生及其月费。显然,您显然需要确保在StudentMonthlyFee模型上设置了正确的关系。