繁体   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