Задать вопрос

Как правильно делать вложенный запрос на yii2?

На хабре нашел вот такой пример, как можно вставить подзапрос внутрь запроса
$subQuery = (new Query)->select('COUNT(*)')->from('user');
$query = (new Query)->select(['id', 'count' => $subQuery])->from('post');
// $query represents the following SQL:
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`


Не могу понять как дополнить подзапрос чтоб получить

SELECT `id`, (SELECT COUNT(*) FROM `user` WHERE `user`.`id`=`post`.`autor_id`) AS `count` FROM `post`
  • Вопрос задан
  • 3872 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@znepok
А зачем вам здесь вложенный запрос?
Сделайте JOIN:
SELECT `post`.`id`, COUNT(`user`.`id`) AS `count`
FROM `post`
  LEFT JOIN `user` ON `user`.`id` = `post`.`autor_id`
GROUP BY `post`.`id`

По идее в YII так должно быть:
$query = (new Query)
	->select(['post.id', 'count' => 'COUNT(user.id)'])
	->from('post')
	->leftJoin('user', 'user.id = post.autor_id');
	->groupBy(['post.id']);
Ответ написан
Ваш ответ на вопрос

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

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