📜  在两个日期时间 laravel 之间获取 recoed - PHP (1)

📅  最后修改于: 2023-12-03 15:23:28.669000             🧑  作者: Mango

在两个日期时间范围内获取 recoed - Laravel

在Laravel中,我们可以使用Eloquent ORM来获取数据库记录。 在这篇文章中,我们将讨论如何使用Laravel来获取在两个日期时间之间的记录。

步骤1: 定义模型和数据表

首先,我们需要定义我们的数据表和模型。 假设我们有一个名为users的数据表,我们的模型名称为User。 我们需要在User模型中定义一个scope方法,并将其放置在查询语句中以获取在两个日期时间之间的记录。 在这种情况下,我们将名为betweenDates的方法添加到我们的User模型中。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasFactory;

    public function scopeBetweenDates($query, $fromDate, $toDate)
    {
        return $query->whereBetween('created_at', [$fromDate, $toDate]);
    }
}

在上面的代码中,我们使用了Laravel的查询构建器中的whereBetween方法来过滤记录,该方法接收两个参数。 第一个参数是要筛选的列,这里是created_at。 第二个参数是开始日期和结束日期。 我们将这个模型范围称为betweenDates,以便稍后调用它。

步骤2: 在控制器中调用模型范围

现在我们需要在控制器中调用我们的模型范围来获取在两个日期时间之间的记录。 假设我们有一个名为UserController的控制器,并且我们想获取在2021年1月1日至2021年1月31日之间创建的用户。 我们可以在控制器中调用我们的betweenDates模型范围,并将开始日期和结束日期作为参数传递。 我们还可以使用get()方法来获取记录,如下所示:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
    public function index()
    {
        $fromDate = '2021-01-01 00:00:00';
        $toDate = '2021-01-31 23:59:59';

        $users = User::betweenDates($fromDate, $toDate)->get();

        return view('users.index', compact('users'));
    }
}
步骤3: 在视图中循环显示记录

现在我们已经从数据库中获取了在两个日期时间之间创建的用户,我们必须在视图中循环显示这些记录。 在这个例子中,我们可以简单地使用foreach循环来遍历$users变量,并使用Laravel的Blade模板引擎来显示每个用户的详细信息。

@foreach ($users as $user)
    <tr>
        <td>{{ $user->id }}</td>
        <td>{{ $user->name }}</td>
        <td>{{ $user->email }}</td>
        <td>{{ $user->created_at }}</td>
    </tr>
@endforeach

由于我们已经使用了Laravel的Eloquent ORM,所以可以很方便地访问$user对象的属性,例如idnameemailcreated_at

结论

用Laravel在两个日期时间范围内获取记录非常简单。 我们可以定义一个模型范围,然后在控制器中调用它以获取我们需要的记录。 最后,在视图中循环显示记录。 通过使用Laravel提供的查询构建器和Eloquent ORM,我们可以轻松过滤并获取数据库中的数据。