php – Laravel – 从附带where子句的另一个表中不存在的记录中获取记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel – 从附带where子句的另一个表中不存在的记录中获取记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1938字,纯文字阅读大概需要3分钟。
内容图文
![php – Laravel – 从附带where子句的另一个表中不存在的记录中获取记录](/upload/InfoBanner/zyjiaocheng/789/ff40881978ae4f1780cb0a6edc76dbf0.jpg)
我有以下SQL表(在MySQL中):
students
+-----+------------+
| id | first_name |
+-----+------------+
| 01 | John |
+-----+------------+
| 02 | Jane |
+-----+------------+
| 03 | Peter |
+-----+------------+
academics
+-----+-----------+----------+------+
| id | year_start| year_end |status|
+-----+-----------+----------+------+
| 10 | 2016 | 2017 |1 |
+-----+-----------+----------+------+
| 20 | 2017 | 2018 |0 |
+-----+-----------+----------+------+
enrollments
+----+------------+-------------+
| id | student_id | academic_id |
+----+------------+-------------+
| 1 | 01 | 10 |
+----+------------+-------------+
| 2 | 02 | 20 |
+----+------------+-------------+
| 3 | 01 | 20 |
+----+------------+-------------+
如何从学生表和注册表中获取当前学年未注册的学生或当前学年的注册表中没有记录的学生.
现在,我可以通过此查询从学生表中获取没有注册详细信息的学生表:
$students = \DB::table('students')
->select(
'students.id',
'first_name'
)
->leftJoin('enrollments','enrollments.student_id','=','students.id')
->whereNull('enrollments.student_id')
->get();
根据上表中的数据,此查询将返回学生Peter – 03.
但是我怎样才能获得当前学年没有入学细节的学生?
这就是我确定当前学年的方式:
$current_academic = Academic::where('status', 1)->first();
使用现有查询,我如何加入学术表,以便我可以查询当前学年没有注册记录的学生.
将非常感谢您的认真答复和建议.
解决方法:
$current_academic = Academic::where('status', 1)->first();
$students = \DB::table('students')
->select(
'students.id',
'first_name'
)
->whereNotExists( function ($query) use ($current_academic) {
$query->select(DB::raw(1))
->from('enrollments')
->whereRaw('students.id = enrollments.student_id')
->where('enrollments.academic_id', '=', $current_academic->id);
})
->get();
我们来详细介绍一下:
1- whereNotExists子句将仅返回子查询中没有任何行的学生.
2-子查询选择注册表中存在的学生,他们的academics_id为10
希望这可以帮助
内容总结
以上是互联网集市为您收集整理的php – Laravel – 从附带where子句的另一个表中不存在的记录中获取记录全部内容,希望文章能够帮你解决php – Laravel – 从附带where子句的另一个表中不存在的记录中获取记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。