首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Orderby Desc in Eloquent,Laravel

Orderby Desc in Eloquent,Laravel
EN

Stack Overflow用户
提问于 2018-10-25 15:53:33
回答 3查看 6.9K关注 0票数 0

我有一个查询3个表是连接在一起的,我想从消息表中的created_at降序排序结果,请帮助。谢谢。

控制器:

代码语言:javascript
复制
 return new AllChats(Chat::latest('created_at')->whereHas('messages')->with(['messages.users', 'users' =>
        function ($query) {
            $query->where('id', '!=', Auth::id());
        }])->whereHas('users', function ($query) {
            $query->where('id', '=', Auth::id());
        })->get());

按降序显示结果,但使用messages.created_at??

EN

回答 3

Stack Overflow用户

发布于 2018-10-25 15:57:50

像这样使用

代码语言:javascript
复制
return new AllChats(Chat::latest('created_at')>>whereHas('messages',function($q){
    $q->orderBy('created_at', 'desc');
 })->with(['messages.users', 'users' =>
    function ($query) {
        $query->where('id', '!=', Auth::id());
    }])->whereHas('users', function ($query) {
        $query->where('id', '=', Auth::id());
    })->get());
票数 0
EN

Stack Overflow用户

发布于 2018-10-25 16:07:37

您只需将->orderBy添加到查询中的created at字段中。

代码语言:javascript
复制
return new AllChats(Chat::latest('created_at')->whereHas('messages')->with(['messages.users', 
    'users' => function ($query) {
        $query->where('id', '!=', Auth::id());
    }])
    ->orderBy('created_at', 'desc')
    ->whereHas('users', function ($query) {
        $query->where('id', '=', Auth::id());
    })->get());

参考:https://laravel.com/docs/5.7/eloquent

票数 0
EN

Stack Overflow用户

发布于 2018-10-28 00:47:10

您可以使用修改后的withCount()

代码语言:javascript
复制
$chats = Chat::withCount(['messages as latest_message' => function($query) {
        $query->select(DB::raw('max(created_at)'));
    }])
    ->orderByDesc('latest_message')
    [...]
    ->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52984110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档