У меня есть этот красноречивый:Laravel красноречиво, где максимальная дата равна за последние 30 дней
$users = [1,2,3,4,5];
$transactions = Transaction::whereIn('user_id', $users)
->where(DB::raw('DATE(MAX(created_at))'), Carbon::now()->subMonth()->format('Y-m-d'))->get();
return $transactions;
Но вернуть мне эту ошибку: General error: 1111 Invalid use of group function (SQL: select * from transactions where 0 = 1
Как я могу получить все пользователи, последняя сделка равна прошлом 30 дней?
Вот исходный запрос упаковывают вам необходимо:
select * from `transactions` where `0` = 1 and DATE(MAX(created_at)) = ?
Структура таблицы:
Users Table: id (not autoincrement), name, gender, created_at
Transactions Table: id (not autoincrement), user_id (FK), amount, created_at
Мое текущее решение:
Iterate каждый пользователь и проверка их макс. created_at
.
Благодаря
Что это такое, что вы пытаетесь запросить точно, похоже, есть гораздо более красноречивый способ сделать это? Вы запрашиваете, где 'user_id' находится в вашем массиве, но что вы пытаетесь сделать с датой? – James
Привет @James. Извините за мое плохое объяснение. Я попытался запросить все транзакции в пределах этого массива пользователей, что последняя транзакция равна 1 месяцу – ssuhat
Когда вы говорите, что это равно 1 месяц, вы хотите, чтобы те, где дата 'created_at' составляет ровно один месяц в прошлом или те, которые составляют 1 месяц или старше? – James