📅  最后修改于: 2023-12-03 15:23:28.669000             🧑  作者: Mango
在Laravel中,我们可以使用Eloquent ORM来获取数据库记录。 在这篇文章中,我们将讨论如何使用Laravel来获取在两个日期时间之间的记录。
首先,我们需要定义我们的数据表和模型。 假设我们有一个名为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
,以便稍后调用它。
现在我们需要在控制器中调用我们的模型范围来获取在两个日期时间之间的记录。 假设我们有一个名为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'));
}
}
现在我们已经从数据库中获取了在两个日期时间之间创建的用户,我们必须在视图中循环显示这些记录。 在这个例子中,我们可以简单地使用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
对象的属性,例如id
,name
,email
和created_at
。
用Laravel在两个日期时间范围内获取记录非常简单。 我们可以定义一个模型范围,然后在控制器中调用它以获取我们需要的记录。 最后,在视图中循环显示记录。 通过使用Laravel提供的查询构建器和Eloquent ORM,我们可以轻松过滤并获取数据库中的数据。