Laravel の $q->where() を使用して、次の 7 日間に繰り返されるプロジェクトを日付の間に効率的にクエリする方法

Susan Sarandon
リリース: 2024-10-30 02:55:02
オリジナル
270 人が閲覧しました

How to Efficiently Query Projects Recurring in the Next 7 Days with Laravel's $q->日付間のどこ()? 
日付の間のどこ()? " />

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート