Laravel:从数据库

时间:2017-05-06 13:58:40

标签: php mysql database laravel

我正在与Laravel建立一个简单的考勤监控系统。我有两个相关的表teachers表和grade_levels表。

这是

的表格结构

教师表

id(PK)

advisory_class(FK) - >引用grade_levels

上的ID

teacher_name

成绩等级表

id(PK)

grade_level

section

我要做的是从grade_levels

中检索teachers table表中尚未分配给教师的所有记录

如何用Laravel查询?

我尝试进行连接查询,但是我收到了已分配教师的记录。

$teachers = DB::table('teachers') ->join('grade_levels','teachers.advisory_class', '=', 'grade_levels.id') ->select('teachers.*','grade_levels.grade_lvl','grade_levels.section') ->get();

我在这个问题上遗漏了什么吗?

谢谢你们!

1 个答案:

答案 0 :(得分:0)

如果要从父表A中获取子表B中没有匹配项的所有行,则查询应如下所示:

$gradeLevels = DB::table('grade_levels')
    ->leftJoin('teachers','teachers.advisory_class', '=', 'grade_levels.id')
    ->whereNull('teachers.advisory_class')
    ->select('grade_levels.*')
    ->get();

所以在你的情况下,它会是:

teachers

请注意,从$gradeLevels = GradeLevel::whereNotIn('id', Teacher::select(advisory_class))->get(); 表中选择任何内容都没有任何意义,因为您正在搜索"成绩水平"没有老师指派。

使用模型,这可能也有效:

{{1}}