我有一个表具有以下值:
unidade_id,bloco_id,图片名称和版本。
为缩小索引视图,我试图仅显示image_name的最新版本。但是问题是... 当我将groupBy和orderBy设为此值时,结果始终是第一个版本。
这是我的控制者:
$image_list = Imagem::orderBy('version', 'desc')
->groupBy(['unidade_id', 'bloco_id', 'image_name'])
->get();
我的数据库具有以下示例值:
image_name: Windows10_SalaDeAula | version: 3.0
image_name: Windows10_SalaDeAula | version: 4.0
索引中的结果始终是3.0版本,但是我只需要显示最新版本。
我做错了什么?
答案 0 :(得分:0)
在任何情况下,assembled
必须先为ordered
才是groupBy
在orderBy
之前使用$image_list = groupBy(['unidade_id', 'bloco_id', 'image_name'])
->orderBy('version', 'desc')
->get();
[{
"createdBy":"Tom"
"logistics" : 0,
"paymentStatus" : "Paid",
"orderAmount" : 5393.75,
"details" : {
"street": "S.S road",
"postCOde": "440111",
},
"subOrders" : [
{
"name" : "sub Product1",
"mrp" : 12,
"details": "desk"
},
{
"name" : "subProduct2",
"mrp" : 89,
"details": "chair"
}
]
}]
答案 1 :(得分:0)
尝试添加具有最大\最小聚合的选择选项:
//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();
答案 2 :(得分:0)
全力以赴,寻求帮助。
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();