簡體   English   中英

Laravel 返回一條記錄,其中最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM