Heim  >  Artikel  >  Backend-Entwicklung  >  Globaler Geltungsbereich in Laravel (StepWise).

Globaler Geltungsbereich in Laravel (StepWise).

Barbara Streisand
Barbara StreisandOriginal
2024-09-24 06:20:32616Durchsuche

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');

    }
}
  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 Hinzufügen des ActiveScope zum Modell generiert User::all() das folgende SQL.

select * from `users` where `is_active` = '1'

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();

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();
// Remove some of the global scopes...
User::withoutGlobalScopes([
    ActiveScope::class, AgeScope::class
])->get();

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!

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