Laravel 10.44 menawarkan sebuah fitur baru untuk model Eloquent ORM. Beberapa developer menambahkan beberapa fitur yang menarik disana.
Misalnya, Eliezer Margareten telah menyumbangkan atribut ScopedBy untuk mendaftarkan global scopes pada model Eloquent. Contohnya:
use App\Models\Scopes\AncientScope; use Illuminate\Database\Eloquent\Attributes\ScopedBy; #[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 App\Observers\UserObserver; use Illuminate\Database\Eloquent\Attributes\ObservedBy; #[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.
0 komentar:
Posting Komentar