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

本文主要介绍如何在 Laravel 中实现按天、按小时查询数据的方法。对于日常开发中统计数据的需求,按天或者按小时统计都是非常常见的,以下将详细介绍如何实现这些需求。

1. 查询当天数据

如果我们需要查询数据库表中当天的数据,可以通过 Laravel 提供的日期时间函数 Carbon 来获取当前时间,然后再进行 SQL 查询。

以查询今天订单总数为例,代码如下:

use Carbon\Carbon;

public function getOrderCountToday()

{

$today = Carbon::now()->toDateString();

$count = DB::table('orders')

->whereDate('created_at', $today)

->count();

return $count;

}

代码解析:首先我们使用 Carbon 类获取当前时间,并将其转换为日期格式。然后使用 Laravel 自带的函数 whereDate() 获取数据库表中 created_at 字段日期等于 $today 的订单记录。最后使用 count() 函数统计数据并返回结果。

2. 查询特定日期数据

如果我们需要查询特定日期的数据,也可以使用 Carbon 类来实现。

以查询 2022 年 9 月 10 日订单总数为例,代码如下:

use Carbon\Carbon;

public function getOrderCountByDate()

{

$date = Carbon::createFromDate(2022, 9, 10)->toDateString();

$count = DB::table('orders')

->whereDate('created_at', $date)

->count();

return $count;

}

代码解析:首先我们使用 Carbon 类创建一个指定日期的对象,并将其转换为日期格式。然后使用 Laravel 自带的函数 whereDate() 获取数据库表中 created_at 字段日期等于 $date 的订单记录。最后使用 count() 函数统计数据并返回结果。

3. 查询最近一周数据

如果我们需要查询最近一周的数据,可以使用 Carbon 类结合 Laravel 的查询构造器(Query Builder)函数 whereBetween() 来查询。

以查询最近一周订单总数为例,代码如下:

use Carbon\Carbon;

public function getOrderCountLastWeek()

{

$startWeek = Carbon::now()->startOfWeek()->toDateTimeString();

$endWeek = Carbon::now()->endOfWeek()->toDateTimeString();

$count = DB::table('orders')

->whereBetween('created_at', [$startWeek, $endWeek])

->count();

return $count;

}

代码解析:首先我们使用 Carbon 类获取当前时间,并分别使用函数 startOfWeek() 和 endOfWeek() 获取一周的开始和结束时间。然后使用 whereBetween() 函数获取数据库表中 created_at 字段在 $startWeek 和 $endWeek 之间的订单记录。最后使用 count() 函数统计数据并返回结果。

4. 查询最近一小时数据

如果我们需要查询最近一小时的数据,可以使用 Carbon 类结合 Laravel 的查询构造器函数 where() 来查询。

以查询最近一小时订单总数为例,代码如下:

use Carbon\Carbon;

public function getOrderCountLastHour()

{

$hourAgo = Carbon::now()->subHour()->toDateTimeString();

$now = Carbon::now()->toDateTimeString();

$count = DB::table('orders')

->where('created_at', '>', $hourAgo)

->where('created_at', '<', $now)

->count();

return $count;

}

代码解析:首先使用 Carbon 类获取当前时间,并使用函数 subHour() 获取一小时前的时间。然后使用 where() 函数获取数据库表中 created_at 字段大于 $hourAgo 且小于 $now 的订单记录。最后使用 count() 函数统计数据并返回结果。

总结

通过以上四个实例的介绍,我们可以发现,Laravel 提供了非常便捷的查询日期数据的方法,而 Carbon 类也起到了非常重要的作用。在开发过程中,我们可以根据实际需求灵活运用这些方法,提高开发效率。

后端开发标签