Heim >Datenbank >MySQL-Tutorial >Wie kann man mit Laravel's $q->where() zwischen den Daten effizient Projekte abfragen, die in den nächsten 7 Tagen wiederkehren?

Wie kann man mit Laravel's $q->where() zwischen den Daten effizient Projekte abfragen, die in den nächsten 7 Tagen wiederkehren?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 02:55:02311Durchsuche

How to Efficiently Query Projects Recurring in the Next 7 Days with Laravel's $q->where() Zwischen Daten? 
where() Zwischen Daten? " />

Laravel $q->where() between date: A Comprehensive Guide

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn