Press "Enter" to skip to content

Mengenal Laravel Observer: Memantau Perubahan Model dengan Mudah

fadli 0

Dalam pengembangan aplikasi web menggunakan framework Laravel, ada banyak fitur yang memudahkan para pengembang untuk mengelola model dan berinteraksi dengan basis data. Salah satu fitur yang berguna dan sering digunakan dalam Laravel adalah Observer.

Apa itu Laravel Observer? Laravel Observer adalah sebuah mekanisme yang memungkinkan Anda untuk memantau dan merespons perubahan yang terjadi pada model Laravel. Dengan Observer, Anda dapat menjalankan kode khusus atau aksi saat suatu peristiwa tertentu terjadi pada model, seperti saat model disimpan, diperbarui, atau dihapus.

Observer dapat digunakan untuk berbagai keperluan, seperti mengirim notifikasi, memperbarui data terkait, atau memicu tindakan tertentu setelah terjadinya perubahan pada model. Dengan adanya Observer, Anda dapat memisahkan logika bisnis terkait dengan model dari logika model itu sendiri, sehingga membuat kode lebih terstruktur dan mudah dikelola.

Kapan Waktu Yang Tepat Menggunakan Laravel Observer?

Laravel Observer dapat digunakan dalam berbagai situasi di mana kamu perlu merespons perubahan pada model dengan melakukan tindakan tertentu.

Berikut ini adalah beberapa situasi yang tepat untuk menggunakan Laravel Observer:

Notifikasi:

Jika kamu perlu mengirim notifikasi kepada pengguna setelah suatu peristiwa terjadi pada model, seperti notifikasi email atau notifikasi push, Observer dapat digunakan untuk mengelola logika pengiriman notifikasi tersebut.

Misalnya, saat model Order selesai diproses, kamu dapat menggunakan Observer untuk mengirimkan notifikasi kepada pelanggan yang terkait.

Pembaruan Terkait:

Jika terdapat entitas yang terkait dan perlu diperbarui saat model berubah, Observer dapat digunakan untuk mengelola pembaruan terkait tersebut.

Misalnya, jika model Post diperbarui, kamu dapat menggunakan Observer untuk memperbarui statistik atau data terkait lainnya, seperti jumlah tampilan atau komentar pada post tersebut.

Pencatatan Aktivitas:

Jika kamu perlu mencatat aktivitas atau log setiap kali suatu peristiwa terjadi pada model, Observer dapat digunakan untuk mencatat aktivitas tersebut.

Misalnya, saat model User dibuat, diperbarui, atau dihapus, kamu dapat menggunakan Observer untuk mencatat aktivitas tersebut ke dalam log aplikasi.

Validasi:

Jika kamu perlu melakukan validasi tambahan atau mengubah data sebelum menyimpannya ke dalam basis data, Observer dapat digunakan untuk mengelola validasi tersebut.

Misalnya, saat model Order akan disimpan, kamu dapat menggunakan Observer untuk memastikan bahwa data yang disimpan memenuhi aturan bisnis tertentu sebelum disimpan ke dalam basis data.

Integrasi dengan Layanan Eksternal:

Jika kamu perlu berinteraksi dengan layanan eksternal setelah suatu peristiwa terjadi pada model, Observer dapat digunakan untuk mengelola integrasi tersebut.

Misalnya, saat model Payment berhasil dibuat, kamu dapat menggunakan Observer untuk memicu integrasi dengan gateway pembayaran eksternal untuk memproses pembayaran.

Observer dapat digunakan dalam banyak situasi yang berbeda, tergantung pada kebutuhan dan logika bisnis aplikasi kamu.

Pastikan untuk menggunakan Observer dengan bijaksana dan mempertimbangkan kompleksitas dan skala aplikasi mu.

Cara Membuat File Observer

Berikut adalah contoh pembuatan Observer pada Laravel dan mendaftarkannya di EventServiceProvider:

Buat Observer baru dengan menggunakan perintah artisan:

....
php artisan make:observer NamaObserver
....

Perintah ini akan membuat kelas Observer baru dengan nama NamaObserver di dalam direktori App\Observers.

Buka file EventServiceProvider yang ada di direktori app\Providers. kamu akan menemukan method boot() di dalamnya. Tambahkan kode berikut ke method boot() untuk mendaftarkan Observer:

use App\Models\NamaModel;
use App\Observers\NamaObserver;

// ...

public function boot()
{
    NamaModel::observe(NamaObserver::class);
}

Pastikan kamu mengganti NamaModel dengan nama model yang ingin kamu pantau, dan NamaObserver dengan nama Observer yang telah kamu buat.

Buka file Observer yang telah dibuat di direktori App\Observers.

Kamu akan melihat beberapa method default seperti created, updated, dan sebagainya.

Sesuaikan method-method tersebut sesuai kebutuhanmu.

Berikut adalah contoh sederhana untuk method created pada Observer:

namespace App\Observers;

use App\Models\NamaModel;

class NamaObserver
{
    public function created(NamaModel $model)
    {
        // Logika yang ingin Anda jalankan saat NamaModel baru dibuat
        // ...
    }
}

Kamu dapat menambahkan logika khusus yang ingin kamu jalankan saat model tersebut dibuat atau saat perubahan lainnya terjadi.

Setelah langkah-langkah di atas selesai, Observer kamu telah dibuat dan terdaftar dalam EventServiceProvider.

Observer akan merespons perubahan yang terjadi pada model yang kamu pantau.

Pastikan untuk menyimpan perubahan dan menjalankan perintah php artisan optimize untuk memastikan bahwa perubahan yang kamu buat di EventServiceProvider terdeteksi oleh Laravel.

Penting untuk diingat bahwa pada versi Laravel 8 ke atas, kamu perlu menggunakan perintah php artisan event:cache setelah mendaftarkan Observer agar perubahan tersebut tercatat dalam cache aplikasi.

Mematikan Observer

Terkadang, ada situasi di mana Anda mungkin ingin menonaktifkan Observer untuk sementara waktu. Misalnya, saat melakukan pengujian atau menjalankan perintah artisan tertentu. Untuk mematikan Observer, Anda dapat menggunakan method withoutObservers pada query builder.

Contoh penggunaan withoutObservers:

....
User::withoutObservers()->create([...]);
....

Dalam contoh di atas, Observer untuk model User akan dinonaktifkan sementara ketika melakukan operasi create.

Method-Method Yang Tersedia Pada Laravel Observer

Dalam Laravel Observer, terdapat beberapa method yang tersedia yang dapat Anda gunakan untuk merespons perubahan yang terjadi pada model. Berikut adalah beberapa method yang umum digunakan dalam Observer:

1. **created**: Method `created` akan dipanggil setelah model baru berhasil disimpan ke dalam basis data. Anda dapat melakukan tindakan tertentu, seperti mengirim notifikasi atau melakukan pembaruan terkait setelah penciptaan model baru.

2. **updated**: Method `updated` akan dipanggil setelah model berhasil diperbarui di dalam basis data. Anda dapat melakukan tindakan tertentu, seperti memperbarui data terkait, mencatat aktivitas perubahan, atau memicu integrasi dengan layanan eksternal setelah pembaruan model.

3. **deleted**: Method `deleted` akan dipanggil setelah model dihapus dari basis data. Anda dapat melakukan tindakan tertentu, seperti membersihkan data terkait atau mencatat aktivitas penghapusan.

4. **restored**: Method `restored` akan dipanggil setelah model yang sebelumnya dihapus dipulihkan (restored) ke dalam basis data. Ini berlaku jika Anda menggunakan fitur soft delete di Laravel. Anda dapat melakukan tindakan tertentu, seperti memperbarui status atau mengirim notifikasi setelah pemulihan model.

5. **retrieved**: Method `retrieved` akan dipanggil setiap kali model diambil dari basis data. Anda dapat melakukan tindakan tertentu, seperti memformat data sebelum pengambilan, memuat data terkait, atau melampirkan atribut tambahan sebelum model dikirim ke pengguna.

6. **saving**: Method `saving` akan dipanggil sebelum model disimpan (sebelum `create` atau `update`). Anda dapat melakukan tindakan tertentu, seperti validasi tambahan, transformasi data, atau mengisi atribut sebelum penyimpanan.

7. **saving**: Method `saved` akan dipanggil setelah model berhasil disimpan (setelah `create` atau `update`). Anda dapat melakukan tindakan tertentu, seperti memperbarui data terkait atau memicu integrasi dengan layanan eksternal setelah penyimpanan model.

8. **retrieved**: Method `retrieved` akan dipanggil setiap kali model diambil dari basis data. Anda dapat melakukan tindakan tertentu, seperti memformat data sebelum pengambilan, memuat data terkait, atau melampirkan atribut tambahan sebelum model dikirim ke pengguna.

Itu hanya beberapa contoh method yang umum digunakan dalam Observer. Anda dapat menggunakan method-method ini sesuai kebutuhan Anda dalam merespons perubahan yang terjadi pada model.

Kesimpulan

Laravel Observer adalah fitur yang berguna dalam pengembangan aplikasi web dengan Laravel. Dengan menggunakan Observer, Anda dapat dengan mudah memantau perubahan yang terjadi pada model dan menjalankan aksi khusus sebagai respons terhadap perubahan tersebut. Hal ini membantu memisahkan logika bisnis dari logika model, sehingga membuat kode lebih terstruktur dan mudah dikelola.

Dengan begitu, Anda dapat dengan mudah mengimplementasikan logika yang kompleks dan responsif dalam aplikasi Anda tanpa harus mengubah model itu sendiri. Gunakan Laravel Observer untuk meningkatkan efisiensi dan kejelasan kode dalam pengembangan aplikasi web menggunakan Laravel.

Support Us

Jika artikel ini bermanfaat untuk kamu, atau membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: