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

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

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

Сообщение Greengo86 »

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

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

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

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

Сообщение Loveorigami »

Попробуй так

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

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
Сообщения: 58
Зарегистрирован: 2016.08.31, 22:04

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

Сообщение Greengo86 »

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

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

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

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

Сообщение Greengo86 »

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