经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
laravel按天、按小时,查询数据的实例
来源:jb51  时间:2019/10/10 8:36:05  对本文有异议

使用laravel做后台数据统计的时候,需要查询每天的注册量之类的数据

这时候如果直接用created_at分组,是不好用的。

1、所以本文解决这个查询应该怎么写。

2、并且推荐一个时间选择插件,因为统计中一定会用到,本周数据、本月、本季度、上个月。。。。

按天分组数据:

  1. Event::where('created_at','>',Carbon::parse($request->start_date))
  2. ->where('created_at','<',Carbon::parse($request->end_date))
  3. //两个where限制开始结束时间
  4. ->groupBy('date')
  5. ->get([DB::raw('DATE(created_at) as date'),DB::raw('COUNT(*) as value')])
  6. ->toArray();

如果想按小时分组所有查询出来的数据:

  1. Event::where('created_at','>',Carbon::parse('2017-01-01'))
  2. ->where('created_at','<',Carbon::parse('2017-11-09'))
  3. ->groupBy('day')
  4. ->get([
  5. //通过date_format()来格式化created_at字段
  6. DB::raw('DATE_FORMAT(created_at,\'%H\') as day'),
  7. DB::raw('COUNT(*) as value')])
  8. ->toArray()

分享一个时间选择插件

这是官网地址

我把我改好的代码附上:

  1. $(function () {
  2. /*设置开始结束时间*/
  3. var start = moment().subtract(30, 'days');
  4. var end = moment().subtract(-1,'day');
  5. var datas = {};
  6. /*选择之后,将时间重新赋值input*/
  7. function cb(start, end) {
  8. $('#reportrange span').html(start.format('YYYY/MM/DD') + ' - ' + end.format('YYYY/MM/DD'));
  9. }
  10. $('#reportrange').daterangepicker({
  11. startDate: start,
  12. endDate: end,
  13. /*本地化数据*/
  14. locale: {
  15. "format": "YYYY/MM/DD",
  16. "separator": " - ",
  17. "applyLabel": "应用",
  18. "cancelLabel": "关闭",
  19. "fromLabel": "From",
  20. "toLabel": "至",
  21. "customRangeLabel": "自定义",
  22. "weekLabel": "W",
  23. "daysOfWeek": ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"
  24. ],
  25. "monthNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  26. ],
  27. "firstDay": 1
  28. },
  29. ranges: {
  30. '今天': [moment(), moment().subtract(-1, 'days')],
  31. '昨天': [moment().subtract(1, 'days'), moment()],
  32. '前7天': [moment().subtract(7, 'days'), moment()],
  33. '前30天': [moment().subtract(30, 'days'), moment()],
  34. '本月': [moment().startOf('month'), moment().endOf('month').subtract(-1,'day')],
  35. '上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month').subtract(-1,'day')],
  36. '所有': [moment("2017-09-25"), moment().subtract(-1, 'days')]
  37. }
  38. }, cb);
  39.  
  40. cb(start, end);
  41. });

超级好用,结合echart

在用echart的map时候,因为地图权限没有,所以要加载百度地图。这个坑另开帖子记录吧。

以上这篇laravel按天、按小时,查询数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号