我正在尝试以最大值作为对象返回一条记录。当我这样做时:
public function highestExpense()
{
return auth()->user()->expenses()->max('amount');
}
它有效,我获得了最高价值。但是我希望返回整个记录,所以我也可以访问费用名称,created_at等。
这对我不起作用:
return auth()->user()->expenses()->max('amount')->get();
这似乎是一个简单的解决方案,但答案无处可寻。
答案 0 :(得分:7)
如果我正确理解您的问题,要获得金额最高的记录,您只需添加orderBy
并抓住第一行:
auth()->user()->expenses()->orderBy('amount', 'desc')->first();
这应该为expense
提供最高金额。
希望这有帮助!
答案 1 :(得分:1)
通常,
这是你的尝试,
return auth()->user()->expenses()->max('amount')->get();
这将在普通情况下工作,其中表中只有一个amount
列的最大值。
只要不与max
列和表格中的另一列发生冲突,这可能会有效。
如果有多个最大值,则无效。
所以,正如上面所说的Ross Wilson,您必须按降序排序并获得第一行,如:
auth()->user()->expenses()->orderBy('amount', 'desc')->first();
这样可以完美地运行,因为即使有多个max
,这也会为第一行提供列amount
的最大值。
答案 2 :(得分:0)
您可以按照以下步骤收集方法sortByDesc
:
return auth()->user()->expenses()->sortByDesc('amount')->first();