5 Contoh Tutorial Penggunaan Observer Laravel 11 Pada Projek Toko Sepatu Online

Pada kesempatan kali ini, kita akan mempelajari penggunaan Observer pada Laravel 11 dan bagaimana penerapannya dalam sebuah proyek toko sepatu online. Observer adalah salah satu fitur yang sangat berguna dalam mengelola logika bisnis yang berkaitan dengan event pada model Laravel.

Dengan Observer, kita dapat menangani berbagai event seperti menyimpan log perubahan data, mengirim notifikasi, atau memperbarui data terkait tanpa perlu menulis kode berulang di controller.

Analoginya, bayangkan Observer seperti seorang supervisor di sebuah toko yang mengawasi setiap kali ada perubahan yang terjadi, seperti ada pelanggan yang membeli sepatu atau ada sepatu baru yang datang.

Setiap perubahan ini bisa dicatat oleh supervisor tersebut tanpa kita harus memberitahunya setiap saat. Inilah manfaat utama dari Observer, yaitu memudahkan kita dalam memantau perubahan data dan mengurangi kode yang berulang.

Mengapa Observer perlu diterapkan, terutama ketika bekerja sama dengan tim developer lain? Dalam pengembangan aplikasi yang dikerjakan oleh banyak developer, konsistensi dan kejelasan logika bisnis menjadi sangat penting.

Observer membantu memastikan bahwa setiap perubahan yang terjadi pada model ditangani dengan cara yang seragam, tanpa harus menyelipkan kode yang sama di berbagai tempat. Ini juga membuat proses pengembangan lebih terorganisir dan meminimalkan potensi kesalahan.

Berikut ini adalah lima contoh penggunaan Observer Laravel 11 pada proyek toko sepatu online beserta contoh kodingnya.

Membuat Observer untuk Mencatat Riwayat Stok Sepatu

Ketika ada penambahan atau pengurangan stok sepatu, kita perlu mencatat riwayat perubahan tersebut. Dengan Observer, kita bisa menangani event created dan updated pada model Stok untuk menyimpan data perubahan ke tabel RiwayatStok.

php artisan make:observer StokObserver --model=Stok

namespace App\\\\Observers;

use App\\\\Models\\\\Stok;
use App\\\\Models\\\\RiwayatStok;

class StokObserver
{
    public function created(Stok $stok)
    {
        RiwayatStok::create([
            'stok_id' => $stok->id,
            'perubahan' => $stok->jumlah,
            'keterangan' => 'Penambahan stok baru'
        ]);
    }

    public function updated(Stok $stok)
    {
        RiwayatStok::create([
            'stok_id' => $stok->id,
            'perubahan' => $stok->jumlah,
            'keterangan' => 'Pembaharuan stok'
        ]);
    }
}

Jangan lupa untuk mendaftarkan observer ini pada AppServiceProvider atau EventServiceProvider.

public function boot()
{
    Stok::observe(StokObserver::class);
}

Mengirim Notifikasi Email Ketika Pesanan Diterima

Ketika pesanan berhasil diterima, kita dapat mengirim email notifikasi kepada pelanggan menggunakan Observer pada model Pesanan.

php artisan make:observer PesananObserver --model=Pesanan

namespace App\\\\Observers;

use App\\\\Models\\\\Pesanan;
use App\\\\Mail\\\\PesananDiterima;
use Illuminate\\\\Support\\\\Facades\\\\Mail;

class PesananObserver
{
    public function updated(Pesanan $pesanan)
    {
        if ($pesanan->status == 'diterima') {
            Mail::to($pesanan->pelanggan->email)->send(new PesananDiterima($pesanan));
        }
    }
}

Daftarkan observer ini di AppServiceProvider.

public function boot()
{
    Pesanan::observe(PesananObserver::class);
}

Menghitung Diskon Otomatis Ketika Produk Ditambahkan

Observer ini akan secara otomatis menghitung diskon dan memperbarui harga produk ketika produk baru ditambahkan atau diperbarui.

php artisan make:observer ProdukObserver --model=Produk

namespace App\\\\Observers;

use App\\\\Models\\\\Produk;

class ProdukObserver
{
    public function saving(Produk $produk)
    {
        if ($produk->diskon > 0) {
            $produk->harga_setelah_diskon = $produk->harga - ($produk->harga * $produk->diskon / 100);
        }
    }
}

Daftarkan observer ini di AppServiceProvider.

public function boot()
{
    Produk::observe(ProdukObserver::class);
}

Menyinkronkan Data Stok Ketika Produk Terhapus

Ketika sebuah produk dihapus, kita juga perlu memastikan bahwa data stok terkait dihapus atau disinkronkan.

php artisan make:observer ProdukObserver --model=Produk

namespace App\\\\Observers;

use App\\\\Models\\\\Produk;
use App\\\\Models\\\\Stok;

class ProdukObserver
{
    public function deleted(Produk $produk)
    {
        Stok::where('produk_id', $produk->id)->delete();
    }
}

Daftarkan observer ini di AppServiceProvider.

public function boot()
{
    Produk::observe(ProdukObserver::class);
}

Menghitung Total Pesanan Ketika Item Ditambahkan

Observer ini akan menghitung total pesanan ketika item baru ditambahkan ke pesanan.

php artisan make:observer PesananItemObserver --model=PesananItem

namespace App\\\\Observers;

use App\\\\Models\\\\PesananItem;

class PesananItemObserver
{
    public function created(PesananItem $item)
    {
        $pesanan = $item->pesanan;
        $pesanan->total += $item->harga * $item->jumlah;
        $pesanan->save();
    }
}

Daftarkan observer ini di AppServiceProvider.

public function boot()
{
    PesananItem::observe(PesananItemObserver::class);
}

Dengan menggunakan Observer, kita bisa memisahkan logika bisnis terkait event pada model ke dalam kelas tersendiri, sehingga kode menjadi lebih terstruktur dan mudah dikelola. Dengan penerapan Observer yang tepat, proyek toko sepatu online Anda akan lebih mudah dikembangkan dan dipelihara, terutama ketika bekerja sama dengan tim developer lain.

Jika ingin mempelajari lebih lanjut tentang Laravel Observer, Anda bisa mengunjungi dokumentasi resminya.

Penutup dan saran

Laravel terus menjadi salah satu framework yang paling populer di kalangan developer web karena berbagai update menarik yang terus dihadirkan untuk memudahkan proses development. Setiap versi terbaru membawa fitur-fitur yang semakin menyederhanakan pekerjaan developer, baik dari sisi performa maupun keamanan.

Dengan banyaknya kemudahan yang ditawarkan, tidak heran jika Laravel tetap menjadi pilihan utama bagi banyak programmer.

Untuk Anda yang ingin terus mengikuti perkembangan terbaru dan belajar Laravel secara mendalam, jangan lupa untuk selalu memantau website BuildWithAngga. Mereka sering mengadakan kelas gratis dengan studi kasus menarik yang diajarkan oleh mentor berpengalaman.

Selain itu, Anda juga akan mendapatkan akses kelas seumur hidup, sehingga bisa belajar kapan saja dan di mana saja sesuai kebutuhan. Dengan begitu, kemampuan programming Anda akan terus berkembang seiring dengan perkembangan teknologi.