主页/PHP笔记/PHP问答/框架Laravel/Laravel 查询构建器:选择过去一天/一周/一个月/一年的行

Laravel 查询构建器:选择过去一天/一周/一个月/一年的行

Bug编译狮

Bug编译狮

当然可以!Laravel 提供了强大的查询构建器功能,可以帮助你在数据库中进行复杂的查询。要选择过去一天、一周、一个月或一年的数据,你可以使用 whereDate 方法来实现。以下是一些示例代码和相应的解释:

1. 选择过去一天的数据

use AppModelsYourModel;

$lastDay = Carbon::now()->subDays(1);

$records = YourModel::whereDate('created_at', $lastDay)->get();

在这个例子中,我们首先获取当前日期减去一天的日期,然后使用 whereDate 方法根据 created_at 字段筛选出该日期之前的所有记录。

2. 选择过去一周的数据

use AppModelsYourModel;

$lastWeek = Carbon::now()->subWeeks(1);

$records = YourModel::whereDate('created_at', '>=', $lastWeek)->get();

在这个例子中,我们首先获取当前日期减去一周的日期,然后使用 whereDate 方法根据 created_at 字段筛选出该日期之后的所有记录。

3. 选择过去一个月的数据

use AppModelsYourModel;

$lastMonth = Carbon::now()->subMonths(1);

$records = YourModel::whereDate('created_at', '>=', $lastMonth)->get();

在这个例子中,我们首先获取当前日期减去一个月的日期,然后使用 whereDate 方法根据 created_at 字段筛选出该日期之后的所有记录。

4. 选择过去一年的数据

use AppModelsYourModel;

$lastYear = Carbon::now()->subYears(1);

$records = YourModel::whereDate('created_at', '>=', $lastYear)->get();

在这个例子中,我们首先获取当前日期减去一年的日期,然后使用 whereDate 方法根据 created_at 字段筛选出该日期之后的所有记录。

示例代码总结

以上是使用 Laravel 查询构建器选择过去一天、一周、一个月或一年数据的基本示例。你可以根据需要调整日期范围。希望这些示例对你有帮助!

黑板Bug讲师

黑板Bug讲师

介绍

Laravel的eloquent ORM是一个强大的和流畅的数据库查询构建器,使得与PHP数据库交互变得轻而易举。基于时间范围(如最近的一天、一周、一个月或一年)的定期查询非常常见。本教程旨在通过指导您在Laravel应用程序中检索时序数据的各种场景来增强对Laravel查询构建器的了解。

开始使用

在尝试访问具有时间限制的查询之前,请确保您已经有一个Laravel项目运行起来,以及与您要查询的相关数据库迁移和模型。如果您还没有设置过Laravel项目,可以参考以下文章之一:

如何使用Laravel Forge在DigitalOcean上部署Laravel

如何使用Docker Compose设置Laravel环境

在Windows和Mac上安装Laravel的方法如下: 在Windows上,您需要下载并安装Composer。 使用Composer安装Laravel:composer create-project laravel/laravel your_project_name 运行项目:cd your_project_name && php artisan serve 在Mac上,您可以使用Homebrew来安装Composer,然后按照上述步骤进行操作。 如果您的系统没有提供命令行工具,可以尝试从官方网站下载Composer的二进制文件。 安装完成后,运行项目:php artisan serve 这样就可以在Windows或Mac上成功安装并运行Laravel了。

基本设置

您的模型应该继承于。IlluminateDatabaseEloquentModel分类,可选地,您可以指定与模型关联的表。这是基本示例,名为“model”的模型:Post

use IlluminateDatabaseEloquentModel;

class Post extends Model {
    protected $table = 'posts';
}

在您的模型就位后,您可以探索根据当前时间范围检索数据的各种方法。

从最后一天选择行

要从数据库中选择在过去的24小时内创建的行,你可以使用。where由查询构建器提供的方法。如下:

$posts = Post::where('created_at', '>=', now()->subDay())->get();

这将检索所有具有特定属性的帖子。created_at从昨天开始的日期。替换为。Post请提供您的实际模型名称。输出取决于您数据库中的内容。

从过去一周的行选择

为了选择过去一周的记录,请切换。subDay()对不起,我不太明白你的意思,请重新描述一下。subWeek()

$posts = Post::where('created_at', '>=', now()->subWeek())->get();

输出将包括过去一周内所有日期到当前时间的所有帖子。

从上个月选择行

从上个月的数据检索需要对使用方法进行简单的修改。subMonth()方法:

$posts = Post::where('created_at', '>=', now()->subMonth())->get();

您的输出将在过去30天内创建。

从去年选择行

同样,对于过去一年的数据,请利用。subYear()功能:

$posts = Post::where('created_at', '>=', now()->subYear())->get();

好的,我明白了。从过去365天内的帖子开始处理。

高级日期和时间查询

Laravel的查询构建器允许您构建更复杂的查询以进一步筛选您的选择。

在两个日期之间

您也可以使用。whereBetween方法之一是选择两个日期之间的行:

$posts = Post::whereBetween('created_at', [now()->subMonth(), now()])->get();

该功能返回过去一个月内创建的帖子,但允许更精确的边界设置。subMonth()方法。

使用。Carbon对于更高级的日期操作。

Carbon这是一个用于DateTime和允许更复杂操作的简单PHP API扩展。Laravel默认自带Carbon库。以下是使用它从上周五获取帖子的方法:

use CarbonCarbon;

$posts = Post::where('created_at', '>=', Carbon::today()->subWeekday())->get();

这个检索自上次工作日以来的所有帖子。

定制间隔检索

如果你想在任何自定义时间范围内检索记录:

$daysAgo = 10;
$posts = Post::where('created_at', '>=', now()->subDays($daysAgo))->get();

该示例获取过去10天的所有帖子。

结论。

Laravel的查询构建器提供了一种直观且灵活的方式来与数据库交互。通过在查询中整合时间间隔,您的应用程序可以高效地提取时间敏感的数据,同时保持整洁和可读性。请记住,利用现有方法如subDay()好的,请发送你需要翻译的内容。subWeek()这样简化了您的开发过程。

长工码奴1523

长工码奴1523

在 Laravel 中,我们可以通过使用 query() 方法来构建查询,然后通过 where()orWhere() 方法来添加条件。这里我们将创建一个查询来获取过去 7 天的数据。

首先,我们需要确保已经安装了 Laravel 的数据库驱动,并且数据库连接正确。然后,我们可以使用以下代码:

$days = [
    '1' => '今天',
    '2' => '昨天',
    '3' => '前天',
    '4' => '上周五',
    '5' => '上周六',
    '6' => '上周日',
    '7' => '上个月'
];

// 获取过去的一周数据
$last_week = now()->subWeek();
$week_query = $last_week->startOfWeek();

foreach ($days as $day) {
    $date = $week_query->addDays($day)->format('Y-m-d');

    // 创建一个新的查询
    $query = DB::table('users')
        ->select(['users.name', DB::raw("COUNT(*) AS total")])
        ->whereBetween('created_at', [$date, $date . '-00:00'])
        ->groupBy('name');

    // 执行查询并获取结果
    $result = $query->get();

    // 输出结果
    echo "Day: {$day}, Total Users: " . $result->first()['total'] . "n";
}

这段代码首先定义了一个数组 $days,用于存储过去的一周日期。然后,它从当前日期减去一周,并将每个日期转换为字符串形式,以便可以将其插入到 SQL 查询中。

接下来,它遍历这个数组,对于每个日期,它创建一个新的查询并将用户名和他们创建的时间戳作为字段。然后,它应用两个条件:一个是 created_at 应该在指定的日期范围内,另一个是应该按照名称分组。最后,它执行查询并获取所有记录的结果。

这只是一个简单的示例,实际的应用场景可能会更复杂,例如需要处理多个表、不同的日期范围等。但总的来说,这个查询构建器可以帮助你在 Laravel 中轻松地根据特定时间范围过滤数据。