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.

