Association (Relasi) di CakePHP
Penjelasan
CakePHP menyebut relasi antar tabel sebagai "Association", didefinisikan di method initialize() milik Table class lewat $this->hasMany() dan $this->belongsTo() — konsepnya mirip Eloquent, tapi didaftarkan di method initialize(), bukan lewat method relasi terpisah.
Contoh Konsep
<?php
class KategoriTable extends Table
{
public function initialize(array $config): void
{
$this->hasMany('Produk');
}
}
class ProdukTable extends Table
{
public function initialize(array $config): void
{
$this->belongsTo('Kategori');
}
}
// Pemakaian, dengan contain() supaya relasi ikut di-load:
$kategori = $this->fetchTable('Kategori')->get(1, contain: ['Produk']);
foreach ($kategori->produk as $item) {
echo $item->nama;
}
Praktikum
Buat relasi: PenulisTable punya $this->hasMany('Artikel') di initialize(), dan ArtikelTable punya $this->belongsTo('Penulis'). Tulis contoh pemakaian dengan contain(['Penulis']) yang menampilkan nama penulis dari satu artikel.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Relasi TIDAK otomatis ikut ter-load hanya karena didaftarkan di initialize() — kamu WAJIB memakai contain(['NamaAssociation']) di query-nya (atau di get()) supaya data relasinya benar-benar diambil, kalau lupa, properti relasinya akan null/kosong walau relasinya sudah benar didefinisikan.