Мой б CakePHP версии 3.x мне нужно CakePHP, чтобы создать этот SQL заявление:CakePHP - создание подзапрос
SELECT messages.id, message, receiver_id, sender_id, conversation_id, users.id, users.username FROM
(
SELECT messages.id, message, receiver_id, sender_id, conversation_id
FROM messages as messages
ORDER BY created DESC
) AS messages
left join users on (users.id = sender_id)
WHERE (sender_id = 13 or receiver_id =13)
GROUP BY conversation_id;
Я использовал QueryBuilder, но я не очень понимаю, что им делать;)
Это мой торт код:
$subquery = $messages->find()
->order(['Messages.created' => 'DESC']);
debug($neededMessages = $messages->find('all')
->select()
->group('Messages.conversation_id')
->contain(['Users'])
->where(['OR' => ['sender_id' => $userId, ['receiver_id' => $userId]]]));
$neededMessages->execute();
Я думаю, что его только маленькую ошибку там. Пирожные отладочный вывод заключается в следующем: SELECT (ВЫБОР Messages.id КАК Messages__id
, Messages.subject А.С. Messages__subject
, Messages.message А.С. Messages__message
, Messages.created А.С. Messages__created
, Messages.conversation_id А.С. Messages__conversation_id
, Messages.is_new А.С. Messages__is_new
, Messages.receiver_id AS Messages__receiver_id
, Messages.sender_id AS Messages__sender_id
ОТ сообщений Сообщения ORDER BY Messages.created DESC) FROM сообщений Сообщения INNER JOIN пользователи Пользователи ON Users.id = (Messages.sender_id) WHERE (sender_id =: c0 OR receiver_id =: c1) GROUP BY Messages .conversation_id
im отсутствует столбцы в первом заявлении выбора. Может ли кто-нибудь помочь в решении этой проблемы? grretings maik ...
Вы должны добавить информацию о версии CakePHP и схемы базы данных для четко. –
извините, cakePHP 3.x Я добавил эту информацию на свой пост :) спасибо –
Это просто пример, который не имеет никакого смысла в праве? Потому что подзапрос не делает ничего особенного, что делает его использование необходимым. В любом случае, я думаю, проблема в том, что вы не можете легко изменить псевдоним поля, который необходим в подзапросе, потому что в противном случае вы получите такие поля, как 'Messages.id AS Messages__id', что вызовет внешний выбор 'Messages.id' - сбой. Возможно, попросите мастера ORM и часть времени leprechaun tamer _jose_zap_ в IRC, если он знает обходной путь. – ndm