【发布时间】:2018-12-01 13:04:52
【问题描述】:
我的数据库中有 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') 但我仍然没有得到任何结果。
【问题讨论】:
-
你遇到了什么错误?
-
签入表 created_on 字段可用
-
您错过了使用 orderBy。我相信应该是这样的: ->whereHas('hasManyMessages',function ($query){ $query->where('status_enum','=',ENUM_STATUS_CODE_ACTIVE) ->orderBy('created_on','DESC') ;
-
你能包含
hasManyMessages关系的代码吗? -
这个
where是做什么的?where('created_on', 'DESC')。似乎是一个错误。