Globaler Geltungsbereich in Laravel (StepWise).

Barbara Streisand
Freigeben: 2024-09-24 06:20:32
Original
616 Leute haben es durchsucht

Global Scope in Laravel (StepWise).

Globale Scopes sind ein wichtiges Konzept in Laravel und ermöglichen die Wiederverwendung von Eloquent-Bedingungen in Ihrer gesamten Anwendung. Durch die Implementierung von Global Scopes können Sie spezifische Bedingungen auf Abfragen in allen Modellen anwenden und so die Wiederverwendung und Konsistenz von Code fördern. Im Gegensatz dazu sind Local Scopes auf ein einzelnes Modell beschränkt. In diesem Tutorial konzentrieren wir uns auf die Erstellung und Nutzung von Global Scopes in Laravel.

  1. In diesem Schritt erstellen wir eine globale Klasse innerhalb von a app/Scopes/ActiveScope
<?php

namespace app\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;

class ActiveScope implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        // Define your global condition here
        $builder->where('is_active', '=', '1');

        //or we can write
        $builder->whereIsActive('1');

    }
}
Nach dem Login kopieren
  1. Definieren Sie nun ActiveScope im Benutzermodell. Wir sollten die Boot-Methode eines bestimmten Modells überschreiben und die addGlobalScope-Methode verwenden:
<?php

namespace App;

use App\Scopes\AgeScope;
use Illuminate\Database\Eloquent\Model;
use App\Scopes\ActiveScope;

class User extends Model
{
    /**
     * The "booting" method of the model.
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope(new ActiveScope);
    }
}
Nach dem Login kopieren

Nach dem Hinzufügen des ActiveScope zum Modell generiert User::all() das folgende SQL.

select * from `users` where `is_active` = '1'
Nach dem Login kopieren

Es kann Szenarien geben, in denen Sie alle Daten abrufen möchten, ohne den globalen Bereich anzuwenden. In Laravel können Sie einen globalen Bereich umgehen und alle Daten abrufen, indem Sie die Methode withoutGlobalScope verwenden.

User::withoutGlobalScope(ActiveScope::class)->get();
Nach dem Login kopieren

Wenn Sie mehrere oder alle auf ein Modell angewendeten globalen Bereiche entfernen möchten, können Sie die Methode withoutGlobalScopes in Laravel verwenden. Mit dieser Methode können Sie alle globalen Bereiche umgehen oder diejenigen angeben, die Sie entfernen möchten. Hier ist ein Beispiel:

// Remove all of the global scopes...
User::withoutGlobalScopes()->get();
Nach dem Login kopieren
// Remove some of the global scopes...
User::withoutGlobalScopes([
    ActiveScope::class, AgeScope::class
])->get();
Nach dem Login kopieren

Und wenn Ihnen der Inhalt gefällt und Sie weitere tolle Artikel unterstützen möchten, denken Sie darüber nach, mir einen Kaffee zu spendieren! ☕️? Ihre Unterstützung bedeutet mir sehr viel und hilft, den Wissensfluss aufrechtzuerhalten. Das können Sie hier tun: ? Kauf mir einen Kaffee

Das obige ist der detaillierte Inhalt vonGlobaler Geltungsbereich in Laravel (StepWise).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!