【问题标题】:WhereHas not working哪里没有工作
【发布时间】: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')。似乎是一个错误。

标签: php laravel eloquent


【解决方案1】:

Laravel Orderby not working inside Eloquent whereHas relationship? 这个线程帮助我理解 orderBy 不能在 whereHas 中工作,所以我必须使用函数。

【讨论】:

    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 2021-06-30
    • 2013-12-28
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 2018-09-25
    相关资源
    最近更新 更多