Maison > base de données > tutoriel mysql > 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
Libérer: 2024-10-30 02:55:02
original
324 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal