{"id":125,"date":"2024-02-20T07:35:00","date_gmt":"2024-02-20T07:35:00","guid":{"rendered":"https:\/\/emka.web.id\/tutorial\/2024\/02\/20\/cara-menggunakan-scopedby-dan-observedby-attributes-pada-model-eloquent-laravel\/"},"modified":"2024-02-20T07:35:00","modified_gmt":"2024-02-20T07:35:00","slug":"cara-menggunakan-scopedby-dan-observedby-attributes-pada-model-eloquent-laravel","status":"publish","type":"post","link":"https:\/\/emka.web.id\/en\/2024\/02\/cara-menggunakan-scopedby-dan-observedby-attributes-pada-model-eloquent-laravel.html","title":{"rendered":"Cara Menggunakan ScopedBy dan ObservedBy Attributes pada Model Eloquent Laravel"},"content":{"rendered":"<div style=\"clear: both;text-align: center\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi9R_MRnVWGhaKkFvqqZNtLnQViQoqW-pnqBlFR6EzDmlnJdWzEKJAfhE550wltp0W-syQkrbE-fIpHkZqm3H86tdPIzhrFeupLVoJOSzlOTPb786N9DLF5fsRCNMirsb6sGyQvNQya86ISkoPEhrmN1yrKq_qO0Cvmbw4-sLhZugHZmGPA0jUSnroFPTU\/s2200\/laravel-10-featured.webp\" style=\"margin-left: 1em;margin-right: 1em\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1100\" data-original-width=\"2200\" height=\"160\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi9R_MRnVWGhaKkFvqqZNtLnQViQoqW-pnqBlFR6EzDmlnJdWzEKJAfhE550wltp0W-syQkrbE-fIpHkZqm3H86tdPIzhrFeupLVoJOSzlOTPb786N9DLF5fsRCNMirsb6sGyQvNQya86ISkoPEhrmN1yrKq_qO0Cvmbw4-sLhZugHZmGPA0jUSnroFPTU\/s320\/laravel-10-featured.webp\" width=\"320\" \/><\/a><\/div>\n<p>Laravel 10.44 menawarkan sebuah fitur baru untuk model Eloquent ORM. Beberapa developer menambahkan beberapa fitur yang menarik disana.<\/p>\n<div><\/div>\n<div>Misalnya, Eliezer Margareten telah menyumbangkan atribut ScopedBy untuk mendaftarkan global scopes pada model Eloquent. Contohnya:<\/p>\n<pre>use AppModelsScopesAncientScope;\nuse IlluminateDatabaseEloquentAttributesScopedBy;\n\n#[ScopedBy([AncientScope::class])]\nclass User extends Model\n{\n    \/\/\n}\n<\/pre>\n<p>Kita juga dapat terus menggunakan metode booted() dalam model untuk mendaftarkan global scopes:<span><a name=\"more\"><\/a><\/span><\/p>\n<pre>\/**\n * Metode \"booted\" dari model.\n *\/\nprotected static function booted(): void\n{\n    static::addGlobalScope(new AncientScope);\n}\n<\/pre>\n<p>Atribut ScopedBy menerima observer tunggal atau array observer, dan Anda juga dapat menentukan beberapa atribut untuk model Anda:<\/p>\n<pre>\/\/ Tipe array\n#[ScopedBy([ScopeOne::class, ScopeTwo::class])]\n\n\/\/ Tipe string dapat diulang\n#[ScopedBy(ScopeOne::class)]\n#[ScopedBy(ScopeTwo::class)]\n<\/pre>\n<p>Selain itu ada juga atribut ObservedBy untuk mendaftarkan observer model pada model Eloquent kita:<\/p>\n<pre>use AppObserversUserObserver;\nuse IlluminateDatabaseEloquentAttributesObservedBy;\n\n#[ObservedBy([UserObserver::class])]\nclass User extends Authenticatable\n{\n    \/\/\n}\n<\/pre>\n<p>Atribut ObservedBy menerima observer tunggal atau array observer, dan Anda juga dapat menentukan beberapa atribut untuk model Anda jika itu gaya kita:<\/p>\n<pre>\/\/ Array dari kelas\n#[ObservedBy([UserObserver::class, AnotherObserver::class])]\n\n\/\/ Dapat diulang sebagai string\n#[ObservedBy(UserObserver::class)]\n#[ObservedBy(AnotherObserver::class)]\n<\/pre>\n<p>Atribut ObservedBy adalah cara tambahan untuk mendaftarkan observer, yang biasanya dilakukan dalam service provider:<\/p>\n<pre>public function boot(): void\n{\n    User::observe(UserObserver::class);\n}\n<\/pre>\n<p>Dengan menggunakan ScopedBy dan ObservedBy, kita dapat dengan mudah menerapkan global scopes dan observers pada model Eloquent Laravel kita.<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>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&#8230;<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-125","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/comments?post=125"}],"version-history":[{"count":0,"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/posts\/125\/revisions"}],"wp:attachment":[{"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/media?parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/categories?post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/emka.web.id\/en\/wp-json\/wp\/v2\/tags?post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}