where() Zwischen Daten? " />
Problem Statement
Die Abfrage $q-> ;where('recur_at', '>', date("Y-m-d H:i:s", time() - 604800)) erfüllt nicht die gewünschten Kriterien, nämlich Projekte mit recur_at-Werten zu erhalten, die größer als das aktuelle Datum sind minus 7 Tage.
Lösung 1
Um Projekte, die innerhalb der nächsten 7 Tage wiederkehren sollen, genau zu finden, verwenden Sie die folgende Abfrage:
<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>
Lösung 2 (optimiert mit Carbon)
Erweitern Sie die Abfrage mithilfe des Carbon-Pakets zur Datumsmanipulation:
<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>
Optimierte Lösung
Wie Joel Friedman vorgeschlagen hat, ist die folgende Abfrage prägnanter und effizienter:
<code class="php">$projects = Project::whereBetween('recur_at', array(Carbon::now(), Carbon::now()->addWeek())) ->where('status', '<', 5) ->where('recur_cancelled', '=', 0);</code>
Diese Lösung verwendet die Methode whereBetween, um einen Bereich für das Feld recur_at anzugeben und so effektiv Projekte mit recur_at-Werten abzurufen innerhalb der nächsten 7 Tage.
Das obige ist der detaillierte Inhalt vonWie kann man mit Laravel's $q->where() zwischen den Daten effizient Projekte abfragen, die in den nächsten 7 Tagen wiederkehren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!