Cari materi atau course... ⌘K Masuk Mahir.dev Jalur belajar pengembangan web berbasis teks untuk orang yang sudah capek lompat-lompat tutorial. Selesaikan, buktikan, dan pakai skill webmu.
© 2026 Mahir.dev Academy. Semua hak cipta dilindungi.
Dokumentasi Laravel Laravel Observers Resource Collections Policy Filters Gate Before Laravel Observers Resource Collections Policy Filters Gate Before Laravel 1 September 2026 3 menit baca Laravel Observers Resource Collections Policy Filters Gate Before
Definisi
Tiga mekanisme Laravel untuk menjaga logika tetap rapi:
Observer : kelas yang menangkap event lifecycle model (creating, created, updated, deleted) supaya efek samping tidak ditulis di controller.
Resource & Collection : transformer yang menentukan bentuk JSON response secara konsisten, memisahkan data mentah dari representasi API.
Policy Filters / Gate : otorisasi deklaratif, termasuk Gate::before dan authorizeResource untuk CRUD otomatis.
Kapan dipakai
Observer : saat model punya efek samping berulang (slug otomatis, log, sync cache) yang harus jalan tiap kali event terjadi.
Resource/Collection : saat response API butuh shape berbeda dari struktur DB (sembunyikan field, gabung relasi).
Policy/Gate : otorisasi terpusat untuk resource, terutama saat route resource otomatis.
Cara kerja
Observer
php class UserObserver
{
public function creating ( User $user)
Selesai membaca dokumentasi ini? Kembali ke rujukan utama Laravel untuk melanjutkan topik lainnya.
Kembali ke Kategori {
$user -> slug = Str :: slug ($user -> name);
}
public function deleted ( User $user)
{
Cache :: forget ( "user:{ $user -> id }" );
}
}
// daftarkan di EventServiceProvider $observers
protected $observers = [ User ::class => UserObserver ::class ];
API Resource php class UserResource extends JsonResource
{
public function toArray ($request) : array
{
return [
'id' => $this -> id,
'name' => $this -> name,
// email sengaja tidak diikutkan
];
}
}
// pemakaian
return new UserResource ($user);
return UserResource :: collection ($users); // pakai collection
Policy filter dengan Gate::before php Gate :: before ( function ($user, $ability) {
if ($user -> isAdmin) return true ; // admin lolos semua
});
// route resource otomatis pakai policy
Route :: resource ( 'posts' , PostController ::class ) -> middleware ( 'can:view,post' );
Struktur alur
Contoh kombinasi php public function store ( Request $req)
{
$this -> authorize ( 'create' , Post ::class );
$post = Post :: create ($req -> validated ());
return new PostResource ($post);
} Observer menangani slug, policy menangani izin, resource menangani shape — controller tetap tipis.
Catatan implementasi
Observer jangan memanggil query berat di event creating yang bisa memicu event lain (loop).
Resource boleh memuat relasi, tapi hati-hati N+1; gunakan with() di query.
Gate::before mengembalikan null bila bukan wewenangnya, agar policy lanjut mengecek.
Kesalahan umum
Logika di controller padahal observer tersedia : duplikasi efek samping.
Resource membocorkan field : lupa menyaring kolom sensitif.
Gate::before selalu return true : mematikan semua policy berikutnya.
N+1 di collection : tiap item load relasi sendiri karena lupa eager load.
Referensi terkait Laravel Observers Resource Collections Policy Filters Gate Before | Rujukan Pemrograman | Mahir.dev Academy