在laravel中将原始查询转换为雄辩查询

在laravel中将原始查询转换为雄辩查询,laravel,eloquent,Laravel,Eloquent,从rich\u chat\u消息中选择DISTINCT rich\u customers.id 在enrich\u chat\u消息上内部加入enrich\u客户。发送人=enrich\u customers.id ||enrich_chat_消息。接收者=enrich_customers.id 其中(丰富聊天信息。发送人=3) ||enrich_chat_message.received_by=3)和enrich_customers.id=三, 将原始查询转换为雄辩查询 从rich_chat_

rich\u chat\u消息中选择DISTINCT rich\u customers.id
在enrich\u chat\u消息上内部加入enrich\u客户。发送人=enrich\u customers.id ||enrich_chat_消息。接收者=enrich_customers.id 其中(丰富聊天信息。发送人=3) ||enrich_chat_message.received_by=3)和enrich_customers.id=三,

将原始查询转换为雄辩查询

rich_chat_message
在rich_chat_message上选择不同的rich_customers.id。发送人=rich_customers.id | rich_chat_message。接收人=rich_customers.id,其中(rich_chat_message.sent||rich_chat_message.received|by=3)和rich_customers.id=三,

致:


请尝试使用groupBy而不是distinct

您能否澄清为什么原始查询和雄辩查询在表名上存在差异?您的问题是什么??
DB::table('chat_message')
    ->select('customers.id')
    ->JOIN('customers','chat_message.received_by','=','customers.id','||','customers','chat_message.sent_by','=','customers.id')
    ->where('chat_message.sent_by',3)                         
    ->orWhere(function($q) use ($authid){
        $q->where('chat_message.sent_by',3)
        ->orwhere('chat_message.received_by',3);
    })->where('chat_message.sent_by','!=', 3)                       
    ->distinct()->get();
DB::table('chat_message') ->JOIN('customers','chat_message.received_by','=','customers.id','||','customers','chat_message.sent_by','=','customers.id')
->select('customers.id')
->where('chat_message.sent_by',3)                         
                 ->orWhere(function($q) use ($authid){
                          $q->where('chat_message.sent_by',3)
                          ->orwhere('chat_message.received_by',3);
                      })->where('chat_message.sent_by','!=', 3)                       
                 ->groupBy(customers.id)->get();