Heim > Artikel > Backend-Entwicklung > Globaler Geltungsbereich 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.
<?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'); } }
<?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!