在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();