Model Dasar: Table & Entity
Penjelasan
ORM CakePHP memisahkan tanggung jawab jadi DUA class, beda dengan Eloquent yang menyatukannya jadi satu Model: Table class (src/Model/Table, urusan query dan validasi, mis. ProdukTable) dan Entity class (src/Model/Entity, representasi satu baris data, mis. Produk). Kolom yang boleh diisi mass assignment diatur di Entity lewat $_accessible.
Contoh Konsep
<?php
// src/Model/Entity/Produk.php
namespace App\Model\Entity;
use Cake\ORM\Entity;
class Produk extends Entity
{
protected $_accessible = [
'nama' => true,
'harga' => true,
];
}
// Pemakaian di controller (via $this->Produk, otomatis tersedia dari nama controller):
$produkTable = $this->fetchTable('Produk');
$produk = $produkTable->newEntity(['nama' => 'Kaos', 'harga' => 99000]);
$produkTable->save($produk);
$cari = $produkTable->get(1);
echo $cari->nama;
Praktikum
Buat Entity Artikel dengan $_accessible berisi judul dan isi (keduanya true). Buat satu record baru lewat newEntity() + save(), lalu ambil record itu kembali lewat get() dan tampilkan judulnya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Nama Table class TIDAK PERLU didaftarkan manual ke controller — kalau nama controller-mu ProdukController, CakePHP OTOMATIS menyediakan $this->Produk yang merujuk ProdukTable, berkat convention over configuration, selama penamaannya konsisten.