Есть таблица клиентов и таблица транзакций с полем ID клиента.
Мне надо получить получить "плохих" клиентов - тех, кто ни разу не покупал за определенный промежуток времени. То есть надо найти клиентов, для которых не существует транзакций, удовлетворяющих определенному условию.
Пробовал так
$sub = Transaction::find()
->select('client_id')
->where(['>', 'amount', 0])
->andWhere(['brand_id' => $brand])
->andWhere(['between', 'created_at', $start_date, $end_date])
//$sub->count() - Находит 2882 транзакции, пользователей никак не меньше
$result = Client::find()
->where(['brand_id' => $brand])
->andWhere(['not exists', $sub]) // Без этой строчки - 3794, это все пользователи
->indexBy('id')
->asArray()
->count();
// Получаем 0, хотя должно быть не меньше 3794 - 2882
Что я делаю не так?