Laravel Eloquent 查找 JSON 列中日期在某个范围内的所有记录

作者:编程家 分类: laravel 时间:2025-11-17

使用 Laravel Eloquent,我们可以方便地查找 JSON 列中日期在某个范围内的所有记录。这对于需要根据日期过滤和检索数据的应用程序非常有用。让我们来看一个例子。

假设我们有一个名为"events"的数据表,其中有一个"details"列存储着事件的详细信息,包括一个名为"date"的 JSON 字段,记录了事件的日期。我们想要查找出在某个日期范围内发生的所有事件。

首先,我们需要在模型类中定义"details"列为 JSON 类型。在事件模型类中,我们可以使用`casts`属性来实现这一点:

php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Event extends Model

{

protected $casts = [

'details' => 'json',

];

}

接下来,我们可以使用 Eloquent 查询构建器的`whereBetween`方法来筛选出符合条件的记录。我们需要指定`details->date`以及日期范围的起始值和结束值:

php

use App\Models\Event;

$startDate = '2022-01-01';

$endDate = '2022-12-31';

$events = Event::whereBetween('details->date', [$startDate, $endDate])->get();

以上代码将返回在"details->date"字段值在指定范围内的所有事件记录。

案例代码:

php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Event extends Model

{

protected $casts = [

'details' => 'json',

];

}

php

use App\Models\Event;

$startDate = '2022-01-01';

$endDate = '2022-12-31';

$events = Event::whereBetween('details->date', [$startDate, $endDate])->get();

以上代码演示了如何使用 Laravel Eloquent 查找 JSON 列中日期在某个范围内的所有记录。通过定义模型类中的`casts`属性,我们可以将 JSON 列指定为 JSON 类型。然后,我们可以使用`whereBetween`方法来筛选出符合条件的记录。

在本文中,我们介绍了使用 Laravel Eloquent 查找 JSON 列中日期在某个范围内的所有记录的方法。通过定义模型类中的`casts`属性,我们可以将 JSON 列指定为 JSON 类型。然后,使用`whereBetween`方法可以轻松地筛选出符合条件的记录。这种方法非常适用于需要根据日期过滤和检索数据的应用程序。

希望本文对你有所帮助!