Maison  >  Article  >  base de données  >  Comment interroger efficacement les projets récurrents au cours des 7 prochains jours avec $q->where() de Laravel entre les dates ?

Comment interroger efficacement les projets récurrents au cours des 7 prochains jours avec $q->where() de Laravel entre les dates ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 02:55:02267parcourir

How to Efficiently Query Projects Recurring in the Next 7 Days with Laravel's $q->où() entre les dates ? 
où() entre les dates ? " />

Laravel $q->where() entre les dates : un guide complet

Énoncé du problème

La requête $q-> ;where('recur_at', '>', date("Y-m-d H:i:s", time() - 604800)) ne répond pas aux critères souhaités, à savoir obtenir des projets avec des valeurs recur_at supérieures à la date actuelle moins 7 jours.

Solution 1

Pour trouver avec précision les projets qui doivent se reproduire dans les 7 prochains jours, utilisez la requête suivante :

<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>

Solution 2 (optimisée avec Carbon)

Améliorez la requête à l'aide du package Carbon pour la manipulation de date :

<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>

Solution optimisée

Comme Joel Friedman l'a suggéré, la requête suivante est plus concise et efficace :

<code class="php">$projects = Project::whereBetween('recur_at', array(Carbon::now(), Carbon::now()->addWeek()))
    ->where('status', '<', 5)
    ->where('recur_cancelled', '=', 0);</code>

Cette solution utilise la méthode WhereBetween pour spécifier une plage pour le champ recur_at, récupérant ainsi efficacement les projets avec des valeurs recur_at dans les 7 prochains jours.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn