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!