Apa Itu Observer di Laravel 12 dan Kapan Menggunakannya
Kalau Event dan Listener cocok untuk “sesuatu terjadi di aplikasi, beri tahu komponen lain”, Observer punya fokus berbeda: “ketika Eloquent model berubah, jalankan kode ini.”
Artikel ini menjelaskan apa itu Observer di Laravel 12, perbedaannya dengan Event Listener, dan kapan sebaiknya dipakai.
Apa Itu Observer?
Observer adalah kelas yang merespons event lifecycle Eloquent model: saat model dibuat, diupdate, dihapus, dll. Daripada pasang listener di banyak tempat, Observer mengumpulkan semua hook untuk satu model di satu kelas.
Event lifecycle yang bisa di-observe:
creating/createdupdating/updatedsaving/saveddeleting/deletedrestoring/restored(untuk soft deletes)forceDeleting/forceDeleted
Membuat Observer
php artisan make:observer ArticleObserver --model=Article
File dibuat di app/Observers/ArticleObserver.php:
<?php
namespace AppObservers;
use AppModelsArticle;
use IlluminateSupportStr;
class ArticleObserver
{
public function creating(Article $article): void
{
// Auto-generate slug sebelum disimpan
if (empty($article->slug)) {
$article->slug = Str::slug($article->title);
}
}
public function created(Article $article): void
{
// Kirim notifikasi ke admin
cache()->forget('articles.count');
}
public function updating(Article $article): void
{
// Update slug kalau title berubah
if ($article->isDirty('title')) {
$article->slug = Str::slug($article->title);
}
}
public function deleting(Article $article): void
{
// Hapus gambar terkait sebelum artikel dihapus
$article->images()->each(fn ($img) => $img->delete());
}
}
Registrasi Observer
Di app/Providers/AppServiceProvider.php:
<?php
namespace AppProviders;
use AppModelsArticle;
use AppObserversArticleObserver;
use IlluminateSupportServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
Article::observe(ArticleObserver::class);
}
}
Atau bisa dengan attribute di model (Laravel 12):
use AppObserversArticleObserver;
use IlluminateDatabaseEloquentAttributesObservedBy;
#[ObservedBy([ArticleObserver::class])]
class Article extends Model
{
// ...
}
Observer vs Event Listener: Kapan Pakai Yang Mana?
| Kondisi | Pilihan |
|---|---|
| Hook spesifik ke satu Eloquent model | Observer |
| Aksi yang dipicu dari banyak model berbeda | Event Listener |
| Logika bisnis yang tidak terkait model Eloquent | Event Listener |
| Semua hook untuk satu model ingin dikumpulkan di satu tempat | Observer |
Menonaktifkan Observer Sementara
Berguna saat import data massal, agar Observer tidak dipanggil ribuan kali:
// Import tanpa trigger Observer
Article::withoutObservers(function () {
foreach ($rows as $row) {
Article::create($row);
}
});
// Atau nonaktifkan event model seluruhnya
Article::unsetEventDispatcher();
Setelah import selesai, event otomatis aktif kembali.
Baca Juga
- Contoh Implementasi Observer di Laravel 12: Studi Kasus Lengkap
- Apa Itu Event dan Listener di Laravel 12
Mau tim yang bantu setup arsitektur model-driven di aplikasi Laravel Anda? Lihat layanan pengembangan aplikasi kami.
Artikel Lainnya di Kategori Laravel
9 November 2025
Perbedaan Laravel Volt dan Laravel Breeze: Kapan Pakai Yang Mana?
Saat mulai proyek Laravel baru, salah satu pertanyaan yang sering muncul adalah: pakai Breeze atau Volt? Keduanya dari ekosistem Laravel, tapi perannya sangat berbeda. Artikel ini menjelaskan perbedaan Laravel Volt dan Laravel Breeze, bukan untuk memilih yang “lebih baik”, tapi untuk memahami kapan masing-masing dipakai. Laravel Breeze: Starter Kit Autentikasi Laravel Breeze adalah starter kit […]
Baca Artikel10 November 2025
Apa Itu Contract di Laravel 12? Penjelasan Simpel + Contoh Kode
Bayangkan Anda membangun fitur notifikasi. Hari ini kirim via email, bulan depan ditambah WhatsApp, tahun depan mungkin push notification. Kalau kode Anda langsung bergantung ke implementasi email spesifik, setiap perubahan akan memaksa Anda menyentuh banyak file sekaligus. Di sinilah Contract di Laravel 12 berguna. Apa Itu Contract di Laravel 12? Contract di Laravel adalah sekumpulan […]
Baca Artikel10 November 2025
Contoh Implementasi Policy dan Gate di Laravel 12: Studi Kasus CMS Multi-Role
Artikel ini melanjutkan penjelasan konsep Policy dan Gate di Laravel 12 dengan studi kasus implementasi lengkap: sistem manajemen konten dengan beberapa level akses. Studi Kasus: Sistem CMS dengan Multi-Role Skenario: aplikasi CMS dengan role admin, editor, dan author. Aturannya: Admin bisa lakukan semua aksi di artikel mana saja Editor bisa buat, edit, dan publish artikel […]
Baca ArtikelIngin Membaca Artikel Lainnya?
Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.
Lihat Semua Artikel