2017-07-23 79 views
0

我試圖將最大值作爲對象返回一條記錄。當我這樣做:Laravel返回一個記錄,其中最大值

public function highestExpense() 
    { 
     return auth()->user()->expenses()->max('amount'); 
    } 

它的工作原理,我得到的最高值。但我希望返回整個記錄,因此我還可以訪問費用名稱,created_at等。

這並沒有爲我工作:

return auth()->user()->expenses()->max('amount')->get(); 

這似乎是一個簡單的解決方案,但答案是無處可尋。

回答

6

如果我正確理解你的問題,讓有你可以只添加一個orderBy和搶第一排的最高金額紀錄:

auth()->user()->expenses()->orderBy('amount', 'desc')->first(); 

這應該給了expense最高量。

希望這會有所幫助!

+0

這總是我想不出的最簡單的事情,太可怕了。謝謝! :) – Hardist

+0

@Hardist很高興我能幫忙! :) –

1

通常情況下,

這是你嘗試,

return auth()->user()->expenses()->max('amount')->get(); 

這將在正常情況下工作,其中只有一個表中的列amount的最大值。

只要與max列和表中的另一列沒有衝突,就可以工作。

如果有多個最大值,這將不起作用。

所以,作爲Ross Wilson上面所說的,你要訂購降序排列行並獲得第一行,如:

auth()->user()->expenses()->orderBy('amount', 'desc')->first(); 

這將很好地工作,因爲即使有不止一個max,這將給列的最大值的第一行amount