Belajar CodeIgniter 4 #5 : Modeling Data

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 masukan true. Sedangkan, jika tidak maka kita akan masukan false, 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 method save(), insert() dan update(). Jika ada kolom yang tidak dimasukkan ke dalam $allowedFields maka nantinya kolom tersebut tidak dapat digunakan pada method diatas.
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.

Scroll to Top