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