我正在与Laravel建立一个简单的考勤监控系统。我有两个相关的表teachers
表和grade_levels
表。
这是
的表格结构教师表
id(PK)
advisory_class(FK)
- >引用grade_levels
表
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();
我在这个问题上遗漏了什么吗?
谢谢你们!
答案 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}}