CodeIgniter 4: contoh afterInsert model event

Contoh penggunaan model event $afterInsert di CodeIgniter 4

Secara singkat fitur ini mirip seperti trigger pada MySQL, dimana jika record baru ditambahkan maka otomatis lakukan proses tertentu

File: app/Models/PenjualanModel.php

class PenjualanModel extends Model
{
    // ...

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

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

        if ($row['result']){
            // insert data ke tabel notifikasi
            $notifikasi = new NotifikasiModel();
            $params = [
                'pengguna_id' => $row['data']['supplier_id'],
                'pesan' => 'Transaksi penjualan baru',
                'dibaca' => false,
            ];
            $notifikasi->insert($params);
        }
    }
}
  • Jika menggunakan afterInsert 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 integer, berisi data primary key dari PenjualanModel (last insert id)
      • Jika proses insert gagal, maka $row['id'] akan bernilai 0
    2. $row['data'] dengan tipe array associative, berisi data yang di insert
      • Contoh diatas $row['data']['supplier_id'] mengambil supplier_id dari data penjualan yang baru di insert
      • Semua atribut yang di insert bisa diakses
    3. $row['result'] dengan tipe boolen, bernilai true jika proses insert berhasil

Referensi