求助:分组后最新一条数据
public function index(Request $request)
{
$category_id = $request->get(‘category_id’, 1);
$old_user_order = $request->get(‘old_user_order’, 0);
$old_user_name = $request->get(‘old_user_name’, ‘’);
$start_time = $request->get(‘start_time’, ‘’);
$end_time = $request->get(‘end_time’, ‘’);
$scale_result = $request->get(‘scale_result’, ‘’);
$query = scaleOldUserResult::query();
$query->select(['id', 'old_user_id', 'scale_id', 'reasons_id', 'admin_user_id', 'final_result', 'created_at']);
$query->with([
'old_user:id,name,order,status',
'scale:id,name,category_id',
'admin_user:id,name',
'reasons'
]);
$query->whereHas('old_user', function ($query) use ($old_user_order, $old_user_name) {
if ($old_user_order > 0) {
$query->where('order', 'LIKE', '%' . $old_user_order . '%');
}
if($old_user_name){
$query->where('name', 'LIKE', '%' . $old_user_name . '%');
}
});
$query->whereHas('scale', function ($query) use ($category_id) {
$query->where('category_id', $category_id);
});
if ($start_time && $end_time) {
$query->whereBetween('created_at', [$start_time . ' 00:00:00', $end_time . ' 23:59:59']);
} else if ($start_time && !$end_time) {
$query->where('created_at', '>=', $start_time . ' 00:00:00');
} else if (!$start_time && $end_time) {
$query->where('created_at', '<=', $end_time . ' 23:59:59');
}
if($scale_result){
$query->where('final_result', $scale_result);
}
$query->latest();
if($category_id == 2) {
$query->groupBy('scale_id');
}
$list = $query->pages($this->per_page);
return succ($list);
}
$category_id=2 的进行了分组,想获取分组后的最新的一条数据,有没有大佬有什么比较好的方法
注:关联了 old_user、scale、admin_user、reasons 四张表,
本作品采用《CC 协议》,转载必须注明作者和本文链接
改成子查询会好点,如果数据不多,whereIn数组也可以~
业务查询不同维度之间应该隔离,分组就查分组的,不分组就查不分组,方便维护和迭代。
last()