Heim > PHP-Framework > Laravel > Laravel-Abfragebereich

Laravel-Abfragebereich

WBOY
Freigeben: 2023-05-26 17:42:09
Original
611 Leute haben es durchsucht

Der Abfragebereich in Laravel ist eine sehr wichtige Funktion, die es Ihnen ermöglicht, einige häufig verwendete Abfragemethoden im Modell zur Wiederverwendung in der gesamten Anwendung zu definieren. Diese Abfragebereiche können global (für das gesamte Modell gelten) oder lokal (nur für eine Methode des Modells gelten) sein.

In diesem Artikel stellen wir die Definition, Verwendung und einige Dinge vor, die beim Abfragebereich in Laravel beachtet werden sollten.

  1. Definition des Abfragebereichs

Der Abfragebereich ist eine anonyme Funktion, die einen $query-Parameter empfängt, der eine Instanz des Eloquent Query Builder ist. In dieser anonymen Funktion können Sie einige Abfragevorgänge für die Instanz ausführen, z. B. das Hinzufügen von Where-Klauseln, Order-By-Klauseln usw.

Das Folgende ist ein einfaches Beispiel für die Definition eines Abfragebereichs:

public function scopePublished($query)
{
    return $query->where('status', '=', 'published');
}
Nach dem Login kopieren

Im obigen Beispiel definieren wir einen Abfragebereich mit dem Namen „publicated“, der in der Abfrage verwendet wird. Fügen Sie automatisch a hinzu where-Klausel zum Filtern veröffentlichter Modelle.

  1. Abfragebereich verwenden

Abfragebereich zu verwenden ist sehr einfach, rufen Sie einfach die entsprechende Methode des Modells auf. Wenn wir beispielsweise im obigen Beispiel den veröffentlichten Abfragebereich verwenden, müssen wir nur den folgenden Code aufrufen:

$posts = Post::published()->get();
Nach dem Login kopieren

Der obige Code gibt eine Sammlung aller veröffentlichten Post-Instanzen zurück.

Wenn Sie Parameter an den Abfragebereich übergeben müssen, fügen Sie einfach Parameter in dieser Methode hinzu. Beispiel:

public function scopeCategory($query, $categoryId)
{
    return $query->where('category_id', '=', $categoryId);
}
Nach dem Login kopieren

Dieser Abfragebereich kann zum Filtern von Blogbeiträgen nach einer bestimmten Kategorie verwendet werden.

$posts = Post::category(1)->get();
Nach dem Login kopieren

Der obige Code gibt alle Blogbeiträge mit der Kategorie-ID 1 zurück.

Hinweis: Abfragebereiche können verkettet werden, sodass Sie mehrere Abfragebereiche gleichzeitig verwenden können, um präzisere Ergebnisse zu erhalten.

  1. Globale Definition des Abfragebereichs

Wenn Sie im gesamten Modell denselben Abfragebereich verwenden möchten, können Sie eine globale Abfragebereichsdomäne definieren . Rufen Sie dazu einfach die Boot-Methode in Ihrem Modell auf und definieren Sie einen globalen Abfragebereich mithilfe der Methode static::addGlobalScope.

Das Folgende ist ein einfaches Beispiel für einen globalen Abfragebereich:

protected static function boot()
{
    parent::boot();

    static::addGlobalScope('active', function (Builder $builder) {
        $builder->where('active', '=', 1);
    });
}
Nach dem Login kopieren

Im obigen Beispiel definieren wir einen globalen Abfragebereich mit dem Namen „aktiv“ und beschränken ihn auf Datensätze, deren aktives Feld gleich ist 1.

Wenn Sie nun das Modell mit einer beliebigen Methode abfragen, wird der Abfragebereich automatisch wirksam.

  1. Abfragebereich entfernen

Manchmal müssen wir möglicherweise den Abfragebereich eines bestimmten Modells entfernen. Laravel stellt die Methode „removeGlobalScope“ bereit, um uns dabei zu helfen.

Angenommen, wir haben einen globalen Abfragebereich mit dem Namen „aktiv“, können wir ihn mit der folgenden Methode entfernen:

$users = User::withoutGlobalScope('active')->get();
Nach dem Login kopieren

Der obige Code hat keine Auswirkung auf die aktive Domäne Einschränkungen für alle Benutzer.

Hinweis: Wenn Sie alle globalen Abfragebereiche entfernen möchten, können Sie die Methode withoutGlobalScopes verwenden.

$users = User::withoutGlobalScopes()->get();
Nach dem Login kopieren

Der obige Code gibt alle Benutzer zurück, die nicht durch einen globalen Abfragebereich eingeschränkt sind.

Zusammenfassung

Der Abfragebereich ist eine äußerst leistungsstarke Funktion in Laravel. Durch die Verwendung von Abfragebereichen können Sie allgemeine Abfragevorgänge problemlos in Ihrer gesamten Anwendung wiederverwenden und Ihren Code übersichtlicher organisieren. Das Erlernen der richtigen Verwendung von Abfragebereichen kann nicht nur Ihre Produktivität steigern, sondern Ihnen auch dabei helfen, robustere Anwendungen zu erstellen.

Das obige ist der detaillierte Inhalt vonLaravel-Abfragebereich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage