laravel按天、按小时,查询数据的实例

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

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

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

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

按天分组数据:

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

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

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

分享一个时间选择插件

这是官网地址

我把我改好的代码附上:

$(function () {
/*设置开始结束时间*/
 var start = moment().subtract(30, 'days');
 var end = moment().subtract(-1,'day');
 var datas = {};
/*选择之后,将时间重新赋值input*/
 function cb(start, end) {
  $('#reportrange span').html(start.format('YYYY/MM/DD') + ' - ' + end.format('YYYY/MM/DD'));
 }
 $('#reportrange').daterangepicker({
 startDate: start,
 endDate: end,
 /*本地化数据*/
 locale: {
  "format": "YYYY/MM/DD",
  "separator": " - ",
  "applyLabel": "应用",
  "cancelLabel": "关闭",
  "fromLabel": "From",
  "toLabel": "至",
  "customRangeLabel": "自定义",
  "weekLabel": "W",
  "daysOfWeek": ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"
  ],
  "monthNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  ],
  "firstDay": 1
 },
 ranges: {
  '今天': [moment(), moment().subtract(-1, 'days')],
  '昨天': [moment().subtract(1, 'days'), moment()],
  '前7天': [moment().subtract(7, 'days'), moment()],
  '前30天': [moment().subtract(30, 'days'), moment()],
  '本月': [moment().startOf('month'), moment().endOf('month').subtract(-1,'day')],
  '上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month').subtract(-1,'day')],
  '所有': [moment("2017-09-25"), moment().subtract(-1, 'days')]
 }
}, cb);

 cb(start, end);
});

超级好用,结合echart

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

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

(0)

相关推荐

  • Laravel统计一段时间间隔的数据方法

    获取七天以前到现在的数据: $days = Input::get('days', 7); $range = \Carbon\Carbon::now()->subDays($days); $stats = User::where('created_at', '>=', $range) ->groupBy('date') ->orderBy('date', 'DESC') ->get([ DB::raw('Date(created_at) as date'), DB::raw('

  • laravel实现按月或天或小时统计mysql数据的方法

    在PHP里怎么比较简单的实现按时间(如按月,按天,按小时)来统计表里的数据呢? 如:要实现获取下图曲线图数据(ps:当然也可能是柱状图等,数据都是一样的),默认获取七天内的数据,点击今天,7天,15天,30天可任意切换,其中今天是按小时统计. 不过我的实现方法有一个小缺点,当某个小时内是没有数据的,那么该小时不会出现,不过这个应该可以通过前端的形式弥补 好了,废话不多说,上图上代码! 1. 控制器内容 /** * [getsellerdata 获取某时间段内商户结算查询数据] * @param

  • 解决laravel id非自增 模型取回为0 的问题

    问题 laravel5.2 中 如果一个模型的id 为string等非自增类型时候 使用模型的find方法 会返会0 样例代码: $a=Model::find('blcu'); echo $a->id; //结果为0 原因查找 通过var_dump(a)发现a)发现a ["attributes":protected]=> array(16) { ["id"]=> string(4) "blcu" 也就是数据其实是读取出来了 只是

  • 解决Laravel 使用insert插入数据,字段created_at为0000的问题

    据官方文档的说明,使用Eloquent ORM,插数据库的时候可以自动生成created_at,updated_at,代码如下: Model里的代码: <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Notice extends Model { protected $guarded = []; //获取部门名称 public function fromDep(){ return $this->b

  • laravel按天、按小时,查询数据的实例

    使用laravel做后台数据统计的时候,需要查询每天的注册量之类的数据 这时候如果直接用created_at分组,是不好用的. 1.所以本文解决这个查询应该怎么写. 2.并且推荐一个时间选择插件,因为统计中一定会用到,本周数据.本月.本季度.上个月.... 按天分组数据: Event::where('created_at','>',Carbon::parse($request->start_date)) ->where('created_at','<',Carbon::parse(

  • MySQL按小时查询数据,没有的补0

    需求背景 一个统计接口,前端需要返回两个数组,一个是0-23的小时计数,一个是各小时对应的统计数. 思路 直接使用group by查询要统计的表,当某个小时统计数为0时,会没有该小时分组.思考了一下,需要建立辅助表,只有一列小时,再插入0-23共24个小时 CREATE TABLE hours_list ( hour int NOT NULL PRIMARY KEY ) 先查小时表,再做连接需要查的表,即可将没有统计数的小时填充上0.这里由于需要查多个表中,create_time在每个小时区间内

  • java实现连接mysql数据库单元测试查询数据的实例代码

    1.按照javaweb项目的要求逐步建立搭建起机构,具体的类包有:model .db.dao.test; 具体的架构详见下图: 2.根据搭建的项目架构新建数据库test和数据库表t_userinfo并且添加对应的测试数据; (这里我使用的是绿色版的数据库,具体的下载地址:http://pan.baidu.com/s/1mg88YAc) 具体的建立数据库操作详见下图: 3.编写包中的各种类代码,具体参考代码如下: UserInfo.java /** * FileName: UserInfo.jav

  • Laravel接收前端ajax传来的数据的实例代码

    最近有时间把公司的项目整理一下,并把遇到的问题解决了.那么今天也算个学习笔记吧! 最近在做一个笔记的项目,技术栈如下:vue.js + laravel + mongodb 首先不得不感叹vue的神奇,项目昨晚之后我会对整个项目中用到的技术和踩过的坑进行一个总结,今天先记录一个前端传送数据给后端,laravel接收的例子. 前端ajax插件我没有使用vue-resource,说实话,用他遇到了坑,所以使用了axios.js,很好用,而且比vue-resource还小. 来看前端代码(省略vue逻辑

  • MySql 按时间段查询数据方法(实例说明)

    时间格式为2008-06-16 查询出当天数据: SELECT * FROM `table` WHERE date(时间字段) = curdate(); 查询出当月字段: SELECT * FROM `table` WHERE month( 时间字段) = month( now( ) ) ; 时间格式为1219876-- UNIX时间,只要应用"FROM_UNIXTIME( )"函数 例如查询当月: SELECT * FROM `table` WHERE month( from_uni

  • Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解

    本文实例讲述了Laravel框架Eloquent ORM简介.模型建立及查询数据操作.分享给大家供大家参考,具体如下: 注:以下知识点可能有不全面之处,望见谅 NO.1Eloquent ORM简介 Laravel所自带的Eloquent ORM是一个优美.简洁的ActiveRecord实现,用来实现数据库操作 每个数据表都有与之相对应的"模型(Model)"用于和数据交互 NO.2模型的建立 最基础的模型代码如下: namespace App; use Illuminate\Datab

  • Laravel Eloquent ORM 多条件查询的例子

    一.需求: 在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索.那么在model里就需要判断有那个字段组合,怎么组合. 网上找了很久,Laravel群里也问了几个,都说没有写过,于是自己写个吧.话不多说,见代码: function findByParam($param = array()) { $select = new Customer(); if (isset($param['name'])

  • Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()

    Laravel 5.5 Linux mint 18 PHPStorm 最近刚玩Laravel,手册源码还没来得及看完就跃跃欲试做了个小项目,其中有个需求是分组查询数据库中的一个字段并返回每个分组中的数量,还是去翻手册(手册确实够简单): groupBy 和 having 方法可用来对查询结果进行分组.having 方法的用法和 where 方法类似: $users = DB::table('users') ->groupBy('account_id') ->having('account_id

  • 在 Laravel 6 中缓存数据库查询结果的方法

    在加快应用程序速度方面,缓存可能是最有效的.Laravel 预先安装了缓存驱动程序.因此你可以直接使用 Redis, Memcached 或者使用本地文件进行缓存操作.Laravel 附带了此功能. 这一次,我们将讨论直接从模型缓存 Eloquent 查询,从而使数据库缓存变的轻而易举. 这个包可以在 GitHub 找到,此文档将介绍该应用程序的所有要点.但是,这篇文章,我仅仅介绍缓存和清除缓存的知识. 安装 可以通过 Composer 安装 $ composer require rennokk

  • laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

    本文实例讲述了laravel框架数据库操作.查询构建器.Eloquent ORM操作.分享给大家供大家参考,具体如下: 1.连接数据库 laravel连接数据库的配置文件位于config/database.php中,在其中connection字段中包含laravel所支持的数据库的配置信息,可以看到其中有主机.端口.数据库.用户名.密码等信息: 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'),

随机推荐