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
Freigeben: 2024-10-30 02:55:02
Original
309 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage