Laravel返回最大值的一条记录

时间:2017-07-23 08:05:22

标签: php laravel eloquent max

我正在尝试以最大值作为对象返回一条记录。当我这样做时:

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

它有效,我获得了最高价值。但是我希望返回整个记录,所以我也可以访问费用名称,created_at等。

这对我不起作用:

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

这似乎是一个简单的解决方案,但答案无处可寻。

3 个答案:

答案 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();