Study
CakePHP

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.

Editor Latihan

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.