Skop Global ialah konsep penting dalam Laravel, membolehkan penggunaan semula keadaan Eloquent sepanjang permohonan anda. Dengan melaksanakan Skop Global, anda boleh menggunakan syarat khusus pada pertanyaan merentas semua model, mempromosikan penggunaan semula dan ketekalan kod. Sebaliknya, Skop Tempatan terhad kepada satu model. Dalam tutorial ini, kami akan menumpukan pada mencipta dan menggunakan Skop Global dalam 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); } }
Selepas menambah ActiveScope dalam model, User::all() akan menjana SQL berikut.
select * from `users` where `is_active` = '1'
Mungkin terdapat senario di mana anda ingin mengambil semua data tanpa menggunakan skop global. Dalam Laravel, anda boleh memintas skop global dan mengambil semua data dengan menggunakan kaedah withoutGlobalScope.
User::withoutGlobalScope(ActiveScope::class)->get();
Jika anda ingin mengalih keluar berbilang atau semua skop global yang digunakan pada model, anda boleh menggunakan kaedah withoutGlobalScopes dalam Laravel. Kaedah ini membolehkan anda memintas semua skop global atau menentukan skop yang ingin anda alih keluar. Berikut ialah contoh:
// Remove all of the global scopes... User::withoutGlobalScopes()->get();
// Remove some of the global scopes... User::withoutGlobalScopes([ ActiveScope::class, AgeScope::class ])->get();
Dan jika anda menyukai kandungan dan ingin menyokong artikel yang lebih hebat, pertimbangkan untuk membeli saya kopi! ☕️? Sokongan anda bermakna dunia bagi saya dan membantu memastikan pengetahuan mengalir. Anda boleh melakukannya di sini: ? Belikan Saya Kopi
Atas ialah kandungan terperinci Skop Global dalam Laravel (StepWise).. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!