Laravel groupBy groupBy只需显示最后一个值

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']) ->

我有一个表具有以下值:

unidade_id、bloco_id、图像名称和版本

为了缩小索引视图,我试图只显示image\u name的最新版本。但问题是。。。 当我输入groupBy和orderBy这个值时,结果总是第一个版本

这是我的控制器:

$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不起作用?”在对结果集进行排序之前,必须先对其进行组装。