首頁  >  文章  >  資料庫  >  如何使用 Laravel 的 $q->where() 有效率地查詢未來 7 天內重複的項目?

如何使用 Laravel 的 $q->where() 有效率地查詢未來 7 天內重複的項目?

Susan Sarandon
Susan Sarandon原創
2024-10-30 02:55:02268瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn