首页 > 解决方案 > 哪里没有工作

问题描述

我的数据库中有 3 个表。1. 问题表,每个问题都有一些对话 2. 对话表 - 每个对话都有消息 3. 消息表

我正在对对话表进行查询

$answerQuery = \App\Models\TB_Conversation::withCount('hasManyMessages')
    ->with(['hasManyMessages', 'hasManyMessages.createdBy', 'hasManyMessages.reply_of_message_id'])
    ->where('TB_Xolution_Problem_id', '=', $request->problem_id)
    ->whereHas('hasManyMessages', function ($query) {
        $query->where('status_enum', '=', ENUM_STATUS_CODE_ACTIVE)
            ->orderBy('created_on', 'DESC');
    })->where(function ($query) use ($userId) {
        $query->where('initiated_user_id', '=', $userId)
            ->orwhere('receiver_user_id', '=', $userId);
    })->get();

我希望所有对话消息按降序排列,但由于 whereHas 子句,我的查询失败。我做错了什么,我的对话有消息。

Edit_1 - 我试过 orderBy('created_on','desc') 但我仍然没有得到任何结果。

标签: phplaraveleloquent

解决方案


Laravel Orderby 不工作在 Eloquent 里面哪里有关系? 这个线程帮助我理解 orderBy 在 whereHas 中不起作用,所以我必须使用函数。


推荐阅读