CodeIgniter 4: contoh afterUpdate model event

Contoh penggunaan model event $afterUpdate di CodeIgniter 4

Secara singkat fitur ini mirip seperti trigger pada MySQL, dimana jika record di-update maka otomatis lakukan proses tertentu

app/Models/PenjualanModel.php

class PenjualanModel extends Model
{
    // ...

    // setelah proses update, maka panggil fungsi kirim_notifikasi
    // jika ada banyak fungsi, bisa dipisahkan dengan koma
    protected $afterUpdate = ['kirim_notifikasi'];

    // fungsi yang akan dipanggil setelah update
    // $row merupakan return data dari proses update PenjualanModel
    public function kirim_notifikasi(array $row)
    {
        // contoh disini jika penjualan di update, maka kirim notifikasi
        // contoh lain bisa juga proses update stok dilakukan disini

        if ($row['result']){
            $status = $row['data']['status'];

            // insert data ke tabel notifikasi
            $notifikasi = new NotifikasiModel();
            $params = [
                'pengguna_id' => $row['data']['supplier_id'],
                'pesan' => "Transaksi penjualan sudah diproses dengan $status",
                'dibaca' => false,
            ];
            $notifikasi->insert($params);
        }
    }
}
  • Jika menggunakan afterUpdate maka otomatis CodeIgniter akan mengembalikan data, dan ditangkap dengan variabel array $row
  • Nama variabel tidak harus $row, tapi harus bertipe array
  • Isi dari variabel $row yaitu:
    1. $row['id'] dengan tipe array, berisi list data primary key dari PenjualanModel yang di update
      • $row['id'][0] merupakan data primary key PenjualanModel yang di update
    2. $row['data'] dengan tipe array associative, berisi data yang di update
      • Contoh diatas $row['data']['status'] mengambil status dari data status penjualan yang baru di update
      • Harap diperhatikan, hanya data yang di update saja yang ada pada variabel $row['data'], jadi tidak semua atribut ada
      • Jika ada satu atribut saja yang di update, maka isi $row['data'] juga hanya satu saja, begitu seterusnya
    3. $row['result'] dengan tipe boolen, bernilai true jika proses update berhasil

Referensi lebih lanjut