[英]Laravel/Lumen: How to return a single value from the first record matching WHERE clause
[英]Laravel return one record where max value
我試圖返回一個具有最大值的記錄作為對象。 當我這樣做時:
public function highestExpense()
{
return auth()->user()->expenses()->max('amount');
}
它有效,我得到了最高的價值。 但我想返回整個記錄,因此我還可以訪問費用名稱、created_at 等。
這對我不起作用:
return auth()->user()->expenses()->max('amount')->get();
這似乎是一個簡單的解決方案,但無處可尋。
如果我正確理解您的問題,要獲得最高金額的記錄,您只需添加一個orderBy
並獲取第一行:
auth()->user()->expenses()->orderBy('amount', 'desc')->first();
這應該給出最高金額的expense
。
希望這有幫助!
您可以使用 Collection 方法sortByDesc
如下:
return auth()->user()->expenses()->sortByDesc('amount')->first();
通常情況下,
這是你的嘗試,
return auth()->user()->expenses()->max('amount')->get();
這將適用於正常情況,即表中amount
列只有一個最大值。
只要不與表中的max
列和另一列發生沖突,這可能會起作用。
如果有多個最大值,這將不起作用。
所以,正如羅斯威爾遜上面所說,你必須按降序排列行並得到第一行,如:
auth()->user()->expenses()->orderBy('amount', 'desc')->first();
這將完美地工作,因為即使有多個max
,這也會為第一行提供列amount
最大值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.