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

215
03 марта 2019, 19:10

Пытаюсь выполнить такой запрос в yii2:

SELECT
    users.phone as phone,
    users.id as user_id
FROM
    users
WHERE
    (SELECT COUNT(*) 
     FROM cards 
     WHERE cards.user_id = users.id 
       AND cards.expires_at > '2018-10-26') = 0

В коде пишу так:

$subQuery = CardsWebFit::find()
     ->select('COUNT(*) as count')
     ->where(['cards.user_id' => 'users.id'])
     ->andWhere(['>', 'cards.expires_at', Date('Y-m-d', strtotime('+1 weeks'))]);
$clientsGroup = UserFitness::find()
     ->select([
         'id' => 'users.id',
         'phone' => 'users.phone',
      ])
      ->where(['=', $subQuery, 0])
      ->asArray()
      ->all();

Пробовал писать строкой, еще по всякому, но в результате такая ошибка:

Что делаю не так?

Answer 1

А зачем тут коррелированный подзапрос? Сделайте так:

SELECT users.phone as phone,
       users.id as user_id
FROM      users
LEFT JOIN cards ON cards.user_id = users.id 
               AND cards.expires_at > '2018-10-26'
WHERE cards.user_id IS NULL
READ ALSO
migrate через файл php (YII)

migrate через файл php (YII)

есть задача реализовать миграции через файл install подскажите можно ли запустить миграции не через консоль а через файл php ?

167
PHP Запись массива в строку рекурсией

PHP Запись массива в строку рекурсией

есть такой массив и функция, при обычном выводе (echo) всё корректно выводится, но при записывании в строку массив записывается в не понятном...

151
API Platform — кто-то использует?

API Platform — кто-то использует?

Интересует вопрос, использует ли кто-то API Platform (api-platformcom) на реальных проектах в продакшене? Или хотя бы ведется какая-то разработка на нем?

209