首页 > 数据库 > mysql教程 > 如何使用 Laravel 的 $q->where() 高效查询未来 7 天内重复的项目?

如何使用 Laravel 的 $q->where() 高效查询未来 7 天内重复的项目?

Susan Sarandon
发布: 2024-10-30 02:55:02
原创
308 人浏览过

How to Efficiently Query Projects Recurring in the Next 7 Days with Laravel's $q->日期之间的where()? 
where() 日期之间? " />

日期之间的 Laravel $q->where():综合指南

问题陈述

查询 $q-> ;where('recur_at', '>', date("Y-m-d H:i:s", time() - 604800)) 不满足所需条件,即获取 recur_at 值大于当前日期的项目减去 7 天。

解决方案 1

要准确查找将在未来 7 天内重复发生的项目,请使用以下查询:

<code class="php">$projects = Project::where(function($q) {
    $q->where(DB::raw('recur_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()'));
    $q->where('status', '<', 5);
    $q->where('recur_cancelled', '=', 0);
});</code>
登录后复制

解决方案 2(使用 Carbon 优化)

使用 Carbon 包增强查询以进行日期操作:

<code class="php">$projects = Project::where('recur_at', '<=', Carbon::now()->addWeek())
    ->where('recur_at', '!=', "0000-00-00 00:00:00")
    ->where('status', '<', 5)
    ->where('recur_cancelled', '=', 0);</code>
登录后复制

优化解决方案

正如 Joel Friedman 所建议的,以下查询更加简洁高效:

<code class="php">$projects = Project::whereBetween('recur_at', array(Carbon::now(), Carbon::now()->addWeek()))
    ->where('status', '<', 5)
    ->where('recur_cancelled', '=', 0);</code>
登录后复制

该解决方案利用 whereBetween 方法指定 recur_at 字段的范围,有效地检索具有 recur_at 值的项目在接下来的 7 天内。

以上是如何使用 Laravel 的 $q->where() 高效查询未来 7 天内重复的项目?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板