Laravel 10.44 menawarkan sebuah fitur baru untuk model Eloquent ORM. Beberapa developer menambahkan beberapa fitur yang menarik disana.
use AppModelsScopesAncientScope; use IlluminateDatabaseEloquentAttributesScopedBy; #[ScopedBy([AncientScope::class])] class User extends Model { // }
Kita juga dapat terus menggunakan metode booted() dalam model untuk mendaftarkan global scopes:
/** * Metode "booted" dari model. */ protected static function booted(): void { static::addGlobalScope(new AncientScope); }
Atribut ScopedBy menerima observer tunggal atau array observer, dan Anda juga dapat menentukan beberapa atribut untuk model Anda:
// Tipe array #[ScopedBy([ScopeOne::class, ScopeTwo::class])] // Tipe string dapat diulang #[ScopedBy(ScopeOne::class)] #[ScopedBy(ScopeTwo::class)]
Selain itu ada juga atribut ObservedBy untuk mendaftarkan observer model pada model Eloquent kita:
use AppObserversUserObserver; use IlluminateDatabaseEloquentAttributesObservedBy; #[ObservedBy([UserObserver::class])] class User extends Authenticatable { // }
Atribut ObservedBy menerima observer tunggal atau array observer, dan Anda juga dapat menentukan beberapa atribut untuk model Anda jika itu gaya kita:
// Array dari kelas #[ObservedBy([UserObserver::class, AnotherObserver::class])] // Dapat diulang sebagai string #[ObservedBy(UserObserver::class)] #[ObservedBy(AnotherObserver::class)]
Atribut ObservedBy adalah cara tambahan untuk mendaftarkan observer, yang biasanya dilakukan dalam service provider:
public function boot(): void { User::observe(UserObserver::class); }
Dengan menggunakan ScopedBy dan ObservedBy, kita dapat dengan mudah menerapkan global scopes dan observers pada model Eloquent Laravel kita.