此问题已在此处有答案:
Laravel - Eloquent "Has", "With", "WhereHas" - What do they mean?(2个答案)
3天前关闭。
我有一个回应,即以下内容:
[{
"id":7,
"name": "Product Name",
"versions":[
{
"id":1,
"amount":199
},
{
"id":2,
"amount":99
}
]
}]
在Laravel Controller中,我做了以下操作:
$q = Product::select(*)->with('getProductVersion');
$product = $q->WhereHas('getProductVersion', function($q){
$q->orderBy('amount', 'asc'); })->get();
return $product;
getProductVersion
是Product和Version之间的多对多关系。
然而,排序不正确,预期结果是
[{
"id":7,
"name": "Product Name",
"lowest_amount": 99,
"versions":[
{
"id":2,
"amount":99
},
{
"id":1,
"amount":199
}
]
}]
对对象数组进行排序,并将最小值打印到父数组。
1条答案
按热度按时间u1ehiz5o1#
您需要更改
WhereHas
,并使用with
with()方法,用于急切地加载getProductVersion关系,该关系带有一个闭包,该闭包按amount属性以升序对相关版本进行排序
请参阅:https://stackoverflow.com/a/30232227/4613828
如果需要分配最低值,则需要更多: