VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Yii2. Как подсчитать количество полученных записей?

Есть 2 связанные таблицы, products и product_models. В первой 3 записи, во второй 4.

Результатом кода ниже, почему-то, является количество записей из таблицы product_models, т.е. - 4.
А мне нужно чтобы count() cчитал только количество из таблицы products - 3 записи.
1. $cat = [1, 2, 3, 15];

2. $query = Products::find()->select('*');

3. $query->innerJoinWith(['productModels']);

4. if ($cat) $query->where(['in', 'product_models.category_id', $cat]);

5. return $query->count();

Если поменять innerJoinWith на with, то работает корректно, но строка №4 выдает ошибку (получается что он ищет в таблице products столбец product_models.category_id);

Что можно сделать???
Сразу скажу что count($query) не прокатит (в связи с дальнейшими вычислениями)
  • Вопрос задан
  • 911 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
$query->distinct()->count('product.id');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@profaller
Потому что вы не знаете как работает INNER JOIN.

Как насчет просто with или если вам надо прям в один запрос, то joinWith

Products::find()
     ->with('productModels')
     ->andWhere(['in', 'product_models.category_id', $cat])
     ->count()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы