Study
CakePHP

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.

Editor Latihan

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.