Добый день!
Есть три таблицы - articles, translations и comments.
Связи:Модель Articlepublic function relations() {
return array(
'translations' => array(self::HAS_MANY, 'ArticleTranslation', 'articleId'),
'comments' => array(self::HAS_MANY, 'Comment', 'objectId'),
);
}
Модель Commentspublic function relations() {
return array(
'article' => array(self::BELONGS_TO, 'Article', 'objectId'),
);
}
Модель translationspublic function relations() {
return array(
'article' => array(self::BELONGS_TO, 'Article', 'articleId'),
);
}
Нужно сделать выборку по всем трем таблицам, и отсортировать статьи в порядке убывания количества лайков (по полю
likes из таблицы
comments) у их комментариев.
Пробую:$criteria = new CDbCriteria();
$criteria->addCondition('t.Category > 0');
$criteria->limit = 3;
$criteria->with = array(
'comments' => array(
'select' => array(
'commentText',
'likes'
)
),
'translations' => array(
'select' => 'title'
)
);
$articleTranslations = Article::model()->findAll($criteria);
$data['comments'] = $articleTranslations;
Как только пробую что-то вроде
$criteria->order = 'comments.likes DESC'
- падает с ошибкой. Мучаюсь третий час, как победить? Спасибо!