Как подсчитать количество комментариев в связанной таблице?

Для подсчета количества комментариев в связанной таблице в Yii, вам потребуется использовать метод связи withCount() вместе с методом leftJoin() или join().

Для примера, предположим у вас есть две таблицы: "посты" и "комментарии". Связь между ними установлена по полю "post_id" в таблице "комментарии".

Сначала, вам нужно установить связь между таблицами в модели "Post". Для этого, в методе relations() вы можете добавить следующий код:

public function relations()
{
    return array(
        'comments' => array(self::HAS_MANY, 'Comment', 'post_id'),
    );
}

После того, как вы установили связь, вы можете использовать метод withCount() для подсчета количества комментариев. Пример использования метода withCount() приведен ниже:

$posts = Post::model()->withCount('comments')->findAll();

Ответ на ваш вопрос будет содержаться в свойстве "commentCount" каждого объекта модели "Post".

Вы также можете использовать критерии для дополнительной фильтрации и сортировки результатов. Например, если вы хотите получить только посты с определенным количеством комментариев, вы можете использовать следующий код:

$posts = Post::model()->withCount('comments')->together()->having('commentCount = 5')->findAll();

Этот код вернет все посты, у которых ровно 5 комментариев.

Также, стоит упомянуть, что метод withCount() работает только с MySQL версии 5.6 и выше. Если вы используете более раннюю версию MySQL, у вас может быть проблемы с выполнением этого метода.

Надеюсь, это детальное объяснение помогло вам разобраться в подсчете количества комментариев в связанной таблице в Yii.