Laravel groupBy groupBy只需显示最后一个值
我有一个表具有以下值: unidade_id、bloco_id、图像名称和版本 为了缩小索引视图,我试图只显示image\u name的最新版本。但问题是。。。 当我输入groupBy和orderBy这个值时,结果总是第一个版本 这是我的控制器:Laravel groupBy groupBy只需显示最后一个值,laravel,laravel-5,group-by,sql-order-by,Laravel,Laravel 5,Group By,Sql Order By,我有一个表具有以下值: unidade_id、bloco_id、图像名称和版本 为了缩小索引视图,我试图只显示image\u name的最新版本。但问题是。。。 当我输入groupBy和orderBy这个值时,结果总是第一个版本 这是我的控制器: $image_list = Imagem::orderBy('version', 'desc') ->groupBy(['unidade_id', 'bloco_id', 'image_name']) ->
$image_list = Imagem::orderBy('version', 'desc')
->groupBy(['unidade_id', 'bloco_id', 'image_name'])
->get();
My DB具有以下示例值:
image_name: Windows10_SalaDeAula | version: 3.0
image_name: Windows10_SalaDeAula | version: 4.0
索引中的结果始终是3.0版本,但我只需要显示最后一个版本
我做错了什么?在任何情况下,
结果集
必须首先进行组装
,然后才能进行排序
在排序依据之前使用groupBy
$image_list = groupBy(['unidade_id', 'bloco_id', 'image_name'])
->orderBy('version', 'desc')
->get();
尝试使用最大\最小聚合添加选择选项:
//add all necessary fields for selection
$image_list = Imagem::select(DB::raw('max(version) as version'))
->orderBy('version', 'desc')
->groupBy(['unidade_id', 'bloco_id', 'image_name'])
->get();
谢谢你的帮助
Serguey它是这样工作的:
$image_list = Imagem::select(DB::raw('max(version) as version'),
DB::raw('max(id) as id'),
'images.unidade_id as unidade_id',
'images.bloco_id as bloco_id',
'images.image_name as image_name')
->orderBy('version', 'desc')
->groupBy(['unidade_id', 'bloco_id', 'image_name'])
->get();
尝试第一组只按“图像名称”,然后按“版本”订购,我已经尝试过这种方式。。。而且不工作:(嗨,Sehdev,我已经试过了,但也没用。我需要groupBy unidade_id和bloco_id,因为我有一些地方有相同的图像名称,在不同的bloco_id和unidade_id中。我真的不知道为什么这不起作用--“我做了一个更改版本的测试,只有第一个id出现在视图上。为什么groupBy之前的orderBy不起作用?”在对结果集进行排序之前,必须先对其进行组装。