@Zewkin
Я у мамы фронтэндер

CDbCriteria и сортировка?

Добый день!

Есть три таблицы - articles, translations и comments.

Связи:

Модель Article

public function relations() {
        return array(
            'translations' => array(self::HAS_MANY, 'ArticleTranslation', 'articleId'),
            'comments' => array(self::HAS_MANY, 'Comment', 'objectId'),
        );
    }

Модель Comments

public function relations() {
        return array(
            'article' => array(self::BELONGS_TO, 'Article', 'objectId'),
        );
    }


Модель translations

public 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' - падает с ошибкой. Мучаюсь третий час, как победить? Спасибо!
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы