Skip to content
Tutorial emka
Menu
  • Home
  • Debian Linux
  • Ubuntu Linux
  • Red Hat Linux
Menu

Cara Menggunakan ScopedBy dan ObservedBy Attributes pada Model Eloquent Laravel

Posted on February 20, 2024

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 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.

Recent Posts

  • Peazip 10.8 Dirilis, UI Baru dan Ada Fitur Previewing Dalam Arsip
  • Youyeetoo Mini PC: Sebuah NAS Ukuran Kecil Dengan 4 Slot M.2 dan 2 Port 2.5Gbe
  • Jolla Phone Kini Bisa di Pre-oder Jadi Ponsel Secure dengan Linux Independen
  • Inilah Proton Sheets: Spreadsheet Terenkripsi Online yang Aman dan Mudah Digunakan
  • Calibre 8.16 Dirilis dengan Fitur AI dan Perbaikan Bug
  • Radxa C200 Orin Developer Kit: Pakai Jetson Orin NX dan Ekspansi PCIe 4.0
  • Pimoroni Luncurkan Seri Badgeware Baru dengan E-Paper IPS dan LED Wearable
  • Metacomputing Rilis PC ARM 45 Tops Berdaya CIX CP8180 yang Siap Pakai
  • Ubuntu Pro Kini Gratis untuk Pengguna WSL
  • Alpine Linux 3.23 Dirilis dengan Linux Kernel 6.18 LTS, GNOME 49, dan KDE Plasma 6.5
  • Kernel Linux 6.18 Akan Didukung LTS Hingga Desember 2027
  • Kenapa Linux Jadi Backbone Infrastruktur Digital Dunia?
  • VLC 3.0.22 Dirilis dengan Peningkatan Frame Rate untuk GPU AMD, Dukungan Dav1d, dan Opsi Semua Lapisan
  • Linux Mint 22.3 Beta Segera Dirilis Bulan Desember
  • Let’s Encrypt dan Certbot: Inilah Cara Dapat Sertifikat SSL Gratis
  • OnlyOffice 9.2 Dirilis untuk Linux, Sudah Tahu Fiturnya?
  • Linux Kernel 6.18 Dirilis, Ini Fitur Barunya
  • Apa yang Baru di ArchInstall 3.0.14?
  • Ubuntu Touch OTA 1.1 Meluncur dengan Dukungan VoLTE untuk Fairphone 4 dan Vola Phone
  • Apa itu Mozilla AI ‘Rewiring’?
  • AV Linux 25: Distribusi Multimedia Berbasis Enlightenment untuk MX Linux 25
  • Raspberry Pi 5 dengan RAM 1GB Resmi Diperkenalkan
  • Cara Query MySQL di Linux Menggunakan Command Line
  • Ubuntu 26.04 Daily Snapshot Mulai Dirilis Tiap Hari, Kamu Bisa Ikuti – Ini Caranya
  • Gnome 49.2 Dirilis, Ada Update Penanganan Layar Tiled dan Tombol Sticky

Archives

  • December 2025
  • November 2025
  • October 2025
  • August 2025
  • April 2025
  • February 2025
  • November 2024
  • October 2024
  • September 2024
  • May 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
©2025 Tutorial emka | Design: Newspaperly WordPress Theme