这更像是一个SQL问题,而不是一个Laravel问题。
我想基于我的User
模型,使用created_at
字段完成类似下面的操作。(数据库中的表users)
| 创建时间|用户标识|
| - -|- -|
| 2022年4月30日|一个|
| 2022年5月2日|2个|
| 2022年5月3日|四个|
| 日期|创建的用户(到此日期)|到目前为止创建的用户总数|
| - -|- -|- -|
| 2022年至2004年|一个|一个|
| 2022年5月|2个|三个|
有什么办法吗?
到目前为止,我已完成的工作(使用Eloquent ORM):
User::query()
->selectRaw("COUNT(*) created_users_to_this_date, DATE_FORMAT(created_at, '%Y-%m') date")
->orderBy('date')
->groupBy('date')
->get();
等效SQL请求
select COUNT(*) created_users_to_this_date, DATE_FORMAT(created_at, '%Y-%m') date from `users` where `users`.`deleted_at` is null group by `date` order by `date` asc
因此返回
| 日期|创建的用户(到此日期)|
| - -|- -|
| 2022年至2004年|一个|
| 2022年5月|2个|
我感谢你的帮助
3条答案
按热度按时间quhf5bfb1#
如果你的mysql版本支持窗口函数,你可以试着用
SUM
窗口函数来做累计计数ghg1uchk2#
您的等效sql将是
g6ll5ycj3#