我的一个控制器中包含以下内容:
$documentReminders = DB::table('employees')
->where('department_id',5)
->join('employee_attachments', 'employees.id', '=', 'employee_attachments.employeeID')
->whereIn('category', ['Medical Examiners Certificate','Drivers License'] )
->orderBy('employee_attachments.endDate')
->get();
这也成功地返回了我所期望的所有记录,但问题是太多了(我会解释)。
对于每个员工的记录,可能有几十个 employee_attachments.category
(假设一名员工可以同时拥有8名员工和15名员工)。
我想要的是能够限制 employee_attachments
为每位员工返回到每个类别中的一(1)条记录,并且该记录是该类别中与其相关的最新记录 employee_attachments.endDate
现场。
所以基本上如果我有 employee_attachments
table
employeeID || category || endDate
1 || Drivers License || 2019-01-01
1 || Drivers License || 2017-01-01
2 || Drivers License || 2016-01-01
1 || Drivers License || 2018-01-01
1 || Medical Examiners Certificate || 2017-01-01
1 || Medical Examiners Certificate || 2018-01-01
1 || Medical Examiners Certificate || 2019-01-01
2 || Medical Examiners Certificate || 2017-01-01
2 || Medical Examiners Certificate || 2020-01-01
那么我想退回以下物品:
employeeID || category || endDate
1 || Drivers License || 2019-01-01
1 || Medical Examiners Certificate || 2019-01-01
2 || Drivers License || 2016-01-01
2 || Medical Examiners Certificate || 2020-01-01
2条答案
按热度按时间2hh7jdfx1#
获取每个员工的最新记录
employee_attachments
,可以使用employee_attachments
具有附加联接条件的表,其中endDate
应该是最高的laravel eloquent选择所有创建了max的行
获取每个uid类型的最后一个条目
拉威尔雄辩组最近的记录
在原始sql中
演示
pbpqsu0x2#
这里有一个简单的方法。