【发布时间】:2021-12-29 22:34:40
【问题描述】:
这是我的查询;
SELECT
*
FROM
`chats` chat
INNER JOIN(
SELECT MAX(`chats`.`id`) AS last_id
FROM
`chats`
WHERE
(`chats`.`receiver_id` = 1 OR `chats`.`sender_id` = 1)
GROUP BY
CONCAT(
LEAST(
`chats`.`receiver_id`,
`chats`.`sender_id`
),
'.',
GREATEST(
`chats`.`receiver_id`,
`chats`.`sender_id`
)
)
) conversations
ON
conversations.last_id = chat.id
ORDER BY
chat.created_at
DESC;
我已尝试转换此 MySQL 查询。
这是我目前所做的;
$query = Chat::query();
$total_records = $query->select("chats.*")
->innerJoin('chats', function($join) use ($loggin_user) {
$join->on('chats.id', '=',DB::raw('( SELECT MAX(`chats`.`id`) AS last_id FROM `chats` WHERE (`chats`.`receiver_id` = '.$loggin_user.' OR `chats`.`sender_id` = '.$loggin_user.') GROUP BY CONCAT( LEAST( `chats`.`receiver_id`, `chats`.`sender_id` ), '.', GREATEST( `chats`.`receiver_id`, `chats`.`sender_id` ) ) )'))
->orderBy("chats.created_at", "DESC")->get()->toArray();
});
查询后在屏幕上显示此错误:
我需要有人帮助将此查询转换为 Laravel。
【问题讨论】:
标签: php mysql laravel database eloquent