Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden von relativen Datumshelfern in Laravels Query Builder

Verwenden von relativen Datumshelfern in Laravels Query Builder

Johnathan Smith
Johnathan SmithOriginal
2025-03-05 15:29:10349Durchsuche

Using Relative Date Helpers in Laravel's Query Builder

Laravel Version 11.42 führt eine Reihe von praktischen relativen Datumsabfragen-Builder-Methoden ein und vereinfacht die Abfragelogik der Datumsbezogene. Obwohl es nicht erforderlich ist, alle Anwendungen für diese Methoden neu zu überarbeiten, bieten sie einen prägnanteren und leicht zu lesenden Vorteil für die relative Datumslogik im Modell. Schauen wir es uns mit dem Beispiel des Article -Modells an.

Angenommen, Sie haben einen Umfang, um veröffentlichte Artikel mit einem bestimmten Status zu erhalten, und das Datum published_at muss gleich oder früher als die aktuelle Zeit sein:

use Illuminate\Database\Eloquent\Builder;
use App\Models\Article;

public function scopeActive(): Article|Builder
{
    return $this->where('status', ArticleStatus::Published)
                ->where('published_at', '<=', now());
}

Sie können diesen Bereich an anderer Stelle in Ihrem Code verwenden, um Artikel nur an aktive Artikel zu beschränken.

Article::with('user', 'category', 'tags')
    ->active()
    ->orderByDesc('published_at')
    ->limit(20)
    ->get();

Mit Laravel 11.42 können wir nun eine kleine Anpassung an die scopeActive() -Methode zur Verwendung der relativen Datumsmethode vornehmen. Die whereNowOrPast -Methode kann unserer ursprünglichen Logik übereinstimmen:

$this->where('status', ArticleStatus::Published)
     ->whereNowOrPast('published_at');

Wenn Sie den Abfragebauer verwenden möchten, um Artikel mit der mit der Published gekennzeichneten Artikel zu finden, können Sie whereFuture() Methode verwenden:

$this->where('status', ArticleStatus::Published)
     ->whereFuture('published_at');

Was ist, wenn Sie Artikel finden möchten, die früher oder später als das heutige Datum sind? Die neuen relativen Datumshelferfunktionen umfassen or und not Varianten:

$this->whereAfterToday('published_at')
     ->orWhereBeforeToday('published_at');

Für alle neuen relativen Datumsmethoden, die in Laravel v11.42 hinzugefügt wurden, lesen Sie die Pull Request #54408. Diese Methoden befinden sich in einer neuen Funktion namens BuildsWhereDateClauses.

Das obige ist der detaillierte Inhalt vonVerwenden von relativen Datumshelfern in Laravels Query Builder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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