Modeling data CodeIgniter 4 memudahkan untuk berinteraksi dengan table tertentu di database. Kita bisa melakukan Create, Read, Update, dan Delete (CRUD) melalui Models. CodeIgniter 4 sendiri juga telah menyediakan method yang dapat langsung digunakan untuk melakukan CRUD.
Selain itu, CodeIgniter 4 juga telah menyediakan cara untuk membuat Models dengan cepat. Kita bisa menajalankan perintah php spark make:model blog
Setelah itu, CodeIgniter 4 akan membuatkan file baru di app/Models/Blog.php. Kalian bisa gunakan perintah tersebut pada setiap table, tinggal ubah blog menjadi nama table yang akan dibuatkan Modelsnya.
Jika kita membuka file app/Models/Blog.php pada text editor, maka akan muncul tampilan seperti berikut.
<?php namespace App\Models; use CodeIgniter\Model; class Blog extends Model { protected $table = 'blogs'; protected $primaryKey = 'id'; protected $useAutoIncrement = true; protected $returnType = 'array'; protected $allowedFields = []; // Dates protected $useTimestamps = false; protected $dateFormat = 'datetime'; protected $createdField = 'created_at'; protected $updatedField = 'updated_at'; protected $deletedField = 'deleted_at'; // Validation protected $validationRules = []; protected $validationMessages = []; protected $skipValidation = false; protected $cleanValidationRules = true; // Callbacks protected $allowCallbacks = true; protected $beforeInsert = []; protected $afterInsert = []; protected $beforeUpdate = []; protected $afterUpdate = []; protected $beforeFind = []; protected $afterFind = []; protected $beforeDelete = []; protected $afterDelete = []; }
Lihat CodeIgniter 4 sudah membuatkan kita Models untuk table blog. Sangat mudah bukan ? Selanjutnya kita akan bahas terlebih dahulu maksud dari code diatas.
Pertama, jika kita ingin membuat Models secara manual. Jangan lupa untuk extends class tersebut ke dalam Model seperti berikut.
<?php namespace App\Models; use CodeIgniter\Model; class Blog extends Model { }
Selanjutnya, kita akan membahas beberapa variable dibawah ini.
protected $table = 'blogs'; protected $primaryKey = 'id'; protected $useAutoIncrement = true; protected $returnType = 'array'; protected $allowedFields = [];
$table
merupakan table database yang akan digunakan oleh model ini. Disini karena nama$table
saya yaitu ‘blog’ maka saya akan merubahnya.$primaryKey
merupakan nama kolom yang secara unik mengidentifikasi catatan dalam tabel ini. Untuk mengetahui primary key bisa dilihat dibagian Migrations, lalu cari$this->forge->addKey('id', true)
. Kita akan mengubah$primaryKey
menjadi ‘blog_id’ sesuai dengan primary key pada table blog$useAutoIncrement
menentukan apakah table menggunakan fitur peningkatan otomatis pada$primaryKey
. Jika iya maka bisa kita masukantrue
. Sedangkan, jika tidak maka kita akan masukanfalse
, tetapi nantinya kita akan menambahkan$primaryKey
secara manual.$returnType
untuk menentukan type data apa yang nantinya akan dikembalikan dari Model. Nilai defaultnya adalah ‘array’$allowedFields
berisi kolom apa saja yang bisa untuk digunakan pada methodsave()
,insert()
danupdate()
. Jika ada kolom yang tidak dimasukkan ke dalam$allowedFields
maka nantinya kolom tersebut tidak dapat digunakan pada method diatas.
Baca Juga
protected $validationRules = [ 'blog_title' => 'required|min_length[5]|max_length[100]', 'blog_description' => 'required|min_length[5]|max_length[1000]', ]; protected $validationMessages = [ 'blog_title' => [ 'required' => 'Blog title is required', 'min_length' => 'Blog title must be at least 5 characters long', 'max_length' => 'Blog title cannot be more than 100 characters long', ], 'blog_description' => [ 'required' => 'Blog description is required', 'min_length' => 'Blog description must be at least 5 characters long', 'max_length' => 'Blog description cannot be more than 1000 characters long', ], ]; protected $skipValidation = false;
$validationRules
berisi aturan yang diberikan pada setiak kolom di table database yang akan dilakukan tambah maupun ubah data.$validationMessages
berisi pesan yang akan muncul ketika inputan tidak sesuai dengan aturan yang telah ditetapkan.$skipValidation
untuk melewati validasi selama proses tambah maupun ubah data.
protected $allowCallbacks = true; protected $beforeFind = ['callBeforeFind']; protected function callBeforeFind(array $data) { print("Running method before find"); return $data; }
$allowCallbacks
ini berisi boolean yang didalamnya untuk mendefinisakan apakah callback tersebut harus digunakan.$beforeFind
berisi method yang akan digunakan guna menjalankan callback
Penutup
Pada pembelajaran kali ini, kita telah belajar cara modeling data di CodeIgniter 4. Selain itu, kita juga membahas tiap variable yang sering digunakan dalam proses modeling data CodeIgniter 4.