【发布时间】:2016-07-26 12:16:57
【问题描述】:
我有这口才:
$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
我目前的解决方案:
迭代每个用户并检查他们的最大值created_at。
谢谢
【问题讨论】:
-
您要准确查询的是什么,看起来有更雄辩的方法可以做到这一点?您正在查询
user_id在您的数组中的位置,但是您要对日期做什么? -
嗨@詹姆斯。抱歉我的解释不好。我试图查询最后一笔交易等于 1 个月的用户数组中的所有交易
-
当你说等于 1 个月时,你想要那些
created_at日期正好是过去一个月的那些还是 1 个月或更早的那些? -
@James 正好一个月。
-
你能提供表结构吗?简化...