Сортировка при criteria->leftJoinTable

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Greengo86
Сообщения: 49
Зарегистрирован: 2016.08.31, 22:04

Сортировка при criteria->leftJoinTable

Сообщение Greengo86 » 2019.08.01, 00:14

Добрый вечер Всем! Помогите решить слудующу проблему:
Есть таблицы постов и Необходимо сделав leftJoinTable, выбрать связанный с постом комментарий! Но так как связь один-ко-многим, комментарий должен быть один и последний! Последний добавленый, а не последнее изменение в update_at!

Код: Выделить всё

$criteria->group = 'post.id';
$criteria->order = 'comments.id DESC';
Distinct, group и order результата не приносят!Либо приходят все записи комментариев или одна, но самая первая! Каким то образом это можно решить именно в DbCriteria?

Loveorigami
Сообщения: 974
Зарегистрирован: 2014.08.27, 21:54

Re: Сортировка при criteria->leftJoinTable

Сообщение Loveorigami » 2019.08.01, 10:12

Попробуй так

Код: Выделить всё

Select p.*, c.text FROM post p
LEFT JOIN (Select Max(id) max_id, post_id FROM comments GROUP BY post_id) mc ON p.id = mc.post_id
LEFT JOIN comment с ON c.id = mc.max_id

Greengo86
Сообщения: 49
Зарегистрирован: 2016.08.31, 22:04

Re: Сортировка при criteria->leftJoinTable

Сообщение Greengo86 » 2019.08.01, 10:24

Loveorigami,
Нельзя мне использовать чистый SQL - никак! Не было бы проблемы, если бы можно было... А каким образом использовать директиву MAX во вложенном SELECT...

Код: Выделить всё

$criteria->leftJoinTable('comments', 'com.posted_id = re.id', 'com');
Нашёл как можно использоваться MAX в criteria, но это также не спасает! Возвращает также первый комментарий...

Greengo86
Сообщения: 49
Зарегистрирован: 2016.08.31, 22:04

Re: Сортировка при criteria->leftJoinTable

Сообщение Greengo86 » 2019.08.04, 20:26

Ни у кого больше нет вариантов? Возможно нужно применить 2 join'а. Но как именно

Ответить