Maison >développement back-end >tutoriel php >Utilisation des aides à la date relative dans le constructeur de requête de Laravel
Laravel Version 11.42 présente un ensemble de méthodes pratiques de création de requête de datte relative, simplifiant la logique de requête liée à la date. Bien qu'il n'y ait pas besoin de refactoriser toutes les applications pour utiliser ces méthodes, elles fournissent un avantage plus concis et facile à lire à la logique de date relative dans le modèle. Jetons un coup d'œil à l'exemple du modèle Article
.
Supposons que vous ayez une portée pour obtenir des articles publiés avec un statut spécifique, et la date published_at
doit être égale ou antérieure à l'heure actuelle:
use Illuminate\Database\Eloquent\Builder; use App\Models\Article; public function scopeActive(): Article|Builder { return $this->where('status', ArticleStatus::Published) ->where('published_at', '<=', now()); }
Vous pouvez utiliser cette portée ailleurs dans votre code pour limiter les articles aux articles actifs uniquement.
Article::with('user', 'category', 'tags') ->active() ->orderByDesc('published_at') ->limit(20) ->get();
Maintenant, avec Laravel 11.42, nous pouvons faire un petit ajustement à la méthode scopeActive()
pour utiliser la méthode de date relative. La méthode whereNowOrPast
peut correspondre à notre logique d'origine:
$this->where('status', ArticleStatus::Published) ->whereNowOrPast('published_at');
Si vous souhaitez utiliser le constructeur de requête pour trouver des articles marqués Published
mais que vous êtes toujours à l'avenir, vous pouvez utiliser whereFuture()
Méthode:
$this->where('status', ArticleStatus::Published) ->whereFuture('published_at');
Et si vous voulez trouver des articles qui sont plus tôt ou plus tard que la date d'aujourd'hui? Les nouvelles fonctions d'assistance à date relative incluent les variantes or
et not
:
$this->whereAfterToday('published_at') ->orWhereBeforeToday('published_at');
Pour toutes les nouvelles méthodes de date relative ajoutées dans Laravel V11.42, consultez la demande de traction # 54408. Ces méthodes sont situées dans une nouvelle fonctionnalité appelée BuildsWhereDateClauses
.
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!