📅  最后修改于: 2023-12-03 14:53:56.388000             🧑  作者: Mango
在 Laravel 的查询构建器中,我们可以使用 datediff
函数来计算两个日期之间相差的小时数。在本文中,我们将学习如何使用 datediff
函数来构建小时查询。
首先,在你的 Laravel 项目中安装和配置好数据库。我们假设你已经创建好了一个名为 orders
的表,并在表中创建了下面的字段:
id
:订单 ID,整数类型,自增。start_time
:订单开始时间,日期时间类型。end_time
:订单结束时间,日期时间类型。created_at
:订单创建时间,日期时间类型。updated_at
:订单更新时间,日期时间类型。为了使用 datediff
函数来计算两个日期之间的小时数,我们需要使用查询构建器的 selectRaw
方法。下面是一个简单的查询例子,返回订单 ID 和订单持续小时数:
use Illuminate\Support\Facades\DB;
$orders = DB::table('orders')
->selectRaw('id, TIMESTAMPDIFF(HOUR, start_time, end_time) as duration')
->get();
在上面的查询构建器中,我们使用了 MySQL 的 TIMESTAMPDIFF
函数来计算两个日期之间相差的小时数。注意到我们给 selectRaw
方法传递了第一个参数 id
,表示我们希望在结果集中得到订单 ID。我们还传递了一个别名为 duration
的字段,表示我们想要得到的持续小时数。
如果你在浏览器中打印上面的查询结果,你会得到一个包含 id
和 duration
两个字段的数组。如果你只想输出持续小时数,你可以遍历结果集并输出 duration
字段的值。如果你想要格式化输出你的结果,你可以使用 Laravel 的 Blade 模板引擎。以下是一个简单的例子:
// 在控制器方法中查询订单并传递给视图。
$orders = DB::table('orders')
->selectRaw('id, TIMESTAMPDIFF(HOUR, start_time, end_time) as duration')
->get();
return view('orders.index', [
'orders' => $orders,
]);
// 在视图中遍历订单并输出持续小时数。
<ul>
@foreach ($orders as $order)
<li>{{ $order->duration }} hours</li>
@endforeach
</ul>
在本文中,我们学习了如何使用 datediff
函数来计算两个日期之间的小时数,并将其用于 Laravel 的查询构建器中。我们还学习了如何格式化输出查询结果。使用正确的查询构建器方法和函数,可以轻松地构建出复杂的查询。