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 = [];
$tablemerupakan table database yang akan digunakan oleh model ini. Disini karena nama$tablesaya yaitu ‘blog’ maka saya akan merubahnya.$primaryKeymerupakan 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$primaryKeymenjadi ‘blog_id’ sesuai dengan primary key pada table blog$useAutoIncrementmenentukan 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$primaryKeysecara manual.$returnTypeuntuk menentukan type data apa yang nantinya akan dikembalikan dari Model. Nilai defaultnya adalah ‘array’$allowedFieldsberisi kolom apa saja yang bisa untuk digunakan pada methodsave(),insert()danupdate(). Jika ada kolom yang tidak dimasukkan ke dalam$allowedFieldsmaka 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;
$validationRulesberisi aturan yang diberikan pada setiak kolom di table database yang akan dilakukan tambah maupun ubah data.$validationMessagesberisi pesan yang akan muncul ketika inputan tidak sesuai dengan aturan yang telah ditetapkan.$skipValidationuntuk 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;
}
$allowCallbacksini berisi boolean yang didalamnya untuk mendefinisakan apakah callback tersebut harus digunakan.$beforeFindberisi 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.
