Mempelajari Model CodeIgniter 4

irfan-photo irfan · 2 bulan lalu

belajar model codeigniter 4

Model menjadi bagian Pola Desain Software MVC yang akan kita bahas kali ini

Model di CI 4 berguna untuk berinteraksi dengan table pada sebuah database tertentu, misalnya kita ingin melakukan proses CRUD (create, read, update, delete) dengan mudah

maka kita bisa menggunakan model untuk mengeksekusi prosesnya jadi kita tidak perlu menuliskan query yang diulang-ulang lagi nantinya, tinggal ketik 1 kode sudah bisa menghandle proses CRUD tersebut

Cara Membuat Model

membuat model di CI 4 sangat mudah dan ada 2 cara yang bisa dilakukan yaitu melalui Command tools spark atau dengan cara manual

Membuat Model dengan Spark

untuk membuat model dengan spark kalian hanya tinggal mengetikan perintah
php spark make:model nama_model

misalnya saya ingin membuat model user untuk berinteraksi dengan table user, maka perintah yang harus saya ketikan adalah php spark make:model user

maka sebuah file model akan terbuat yang terletak didalam direktori 'app/Models/' dengan nama file User.php

didalamnya sudah ada kode yang siap digunakan dan dicustomisasi sesuai kebutuhan

Membuat Model dengan cara Manual

untuk membuat model dengan cara manual maka kita harus membuat filenya manual dan mengetikan kodenya juga manual

oke kita langsung saja buat secara manual, silahkan buat file User.php didalam direktori 'app/Models/', kemudian tinggal di isi saja file model User.php dengan kode dibawah ini

<?php

namespace App\Models;

use CodeIgniter\Model;

class User extends Model
{

    protected $table = 'users';

    protected $primaryKey = 'id';
    protected $useAutoIncrement = true;

    protected $returnType     = 'array';

    protected $allowedFields = [];
}

Mempelajari Property Model

saat membuat model menggunakan spark kalian pasti akan melihat sudah banyak property yang ada, mari kita bahas satu persatu property tersebut berguna untuk apa saja

Property Utama
  • protected $DBGroup digunakan untuk menentukan grup database, jika database pada aplikasi kalian ada 2 maka bisa mengisi nilainya
  • protected $table property $table digunakan untuk menentukan table mana yang akan digunakan nantinya
  • protected $primaryKey digunakan untuk menentukan primary key dari table yang dipilih, biasanya sih primary key itu terleta pada kolom id namun tidak menuntut kemungkinan primary keynya bukan pada kolom id, jadi disesuaikan saja
  • protected $useAutoIncrement digunkan untuk menentukan apakah primary key sifatnya auto increment atau tidak, jika ya maka anda bisa mengsinya dengan data boolean true
  • protected $insertID menentukan nilai id saat di insert pertama kali
  • protected $returnType digunakan untuk menentukan hasil data yang akan dihasilkan berbentuk array, object atau dengan menggunakan entity class
  • protected $useSoftDeletes apakah kalian akan menghapus data dengan cara soft delete (data nantinya masih tetap ada ditable namun statusnya diset menjadi terhapus)
  • protected $protectFields digunakan untuk mengaktifkan property $allowedFields, defaultnya sih true tapi kalian bisa merubahnya menjadi false
  • protected $allowedFields digunakan untuk menentukan fields / kolom pada table mana saja yang bisa diproses saat terjadi perintah create & update
Property Dates
  • protected $useTimestamps digunakan jika kalian ingin menggunakan property dates yang ada
  • protected $dateFormat menentukan format tanggal yang akan digunakan, tersedia pilihan datetime, date, int
  • protected $createdField memilih kolom mana yang akan dijadikan property ini, nantinya kolom tersebut akan terisi otomatis jika mengaktifkan property $useTimestamps, nilai defaultnya 'created_at'
  • protected $updatedField memilih kolom mana yang akan dijadikan property ini, nantinya kolom tersebut akan terisi otomatis jika mengaktifkan property $useTimestamps, nilai defaultnya 'updated_at'
  • protected $deletedField memilih kolom mana yang akan dijadikan property ini, nantinya kolom tersebut akan terisi otomatis jika mengaktifkan property $useTimestamps, nilai defaultnya 'deleted_at'
Property Validation
  • protected $validationRules digunakan jika kalian ingin melakukan validasi data yang dibuat atau diupdate nantinya, biasanya validasi dilakukan dicontroller tapi kalian juga bisa melakukannya dimodel
  • protected $validationMessages pesan yang digunakan jika validasi data tidak valid
  • protected $skipValidation menentukan apakah kalian akan melewati validasi atau tidak
  • protected $cleanValidationRules -
Property Callbacks
  • protected $allowCallbacks menentukan apakah model tersebut memperbolehkan callback atau tidak
  • protected $beforeInsert callback dilakukan sebelum memasukan data
  • protected $afterInsert callback dilakukan setelah memasukan data
  • protected $beforeUpdate callback dilakukan sebelum update
  • protected $afterUpdate callback dilakukan setelah update
  • protected $beforeFind callback dilakukan sebelum mencari
  • protected $afterFind callback dilakukan setelah mencari
  • protected $beforeDelete callback dilakukan sebelum menghapus
  • protected $afterDelete callback dilakukan setelah menghapus

Mempelajari Method Model

terdapat banyak method yang dapat digunakan, method yang kali ini saya pelajari hanya method yang digunakan untuk CRUD saja, oke kita bahas satu-satu

Membaca Data (Read)

untuk membaca satu data maka bisa menggunakan method find() dan untuk membaca banyak data bisa menggunakan findAll()

penulisan kodenya seperti ini nantinya

// untuk mengambil satu data user berdasarkan id
$userdetail = $UserModel->find($user_id);

// untuk mengambil satu data user dengan kondisi where
$userdetail = $UserModel->where('status', 'Premium')->find($user_id);

// untuk mengambil semua data user
$users = $UserModel->findAll();

// untuk mengambil semua data user dengan kondisi where
$userdetail = $UserModel->where('status', 'Premium')->findAll();

// membatasi data yang diambil
$userdetail = $UserModel->findAll($limit, $offset);

terdapat method lain yang bisa digunakan untuk membaca 1 data saja yaitu dengan menggunakan method first()

berikut penulisan kodenya

$user = $UserModel->where('username', 'Budi')->first();
Membuat Data (Create)
$UserModel->insert([
	'username' => 'irfan',
	'password' => 'secret123'
]);
Mengupdate Data (Update)
// method mengupdate data
$id = 1;
$data = [
	'username' => 'irfan',
	'password' => 'secret123'
]
$UserModel->update($id, $data);

// update beberapa id dengan data yang sama
$data = [
'status' => Premium
];
$UserModel->update(['1','2','3'], $data);

// update dengan kondisi where dan set
$UserModel->where('status', ['Free','Gratis'])->set(['status' => 'Premium'])->update();
Membuat dan Mengupdate data dengan method save()

untuk menggunakan method ini pastikan sudah melakukan konfigurasi property $primaryKey

// membuat data
$data = [
    'username' => 'irfan',
    'password'    => 'secret123',
];
$userModel->save($data);

// mengupdate data > disertai id
$data = [
    'id'       => 1,
    'username' => 'irfan',
    'password'    => 'secret123',
];
$userModel->save($data);
Menghapus data (Delete)
// menghapus dengan 1 id
$UserModel->delete(1);

// menghapus dengan beberapa id
$UserModel->delete([1,2,3]);

// menghapus dengan where
$UserModel->where('status', 'Expired')->delete();

Penutup

sebenarnya terdapat banyak method yang masih belum dijelaskan tapi karena saya hanya membutuhkan beberapa saja jadi hanya menuliskan yang penting dan berguna saja untuk kedepannya

jika dirasa belajarnya kurang tentang model ini kalian bisa langsung mengunjungi dokumentasinya langsung yang sudah saya sediakan dibagian referensi dbawah ini

Terakhir diupdate 03 Jun 2022 08:41 WIB
Daftar Konten Belajar CodeIgniter 4