Doctrine ORM: Entity & Migration
Penjelasan
Doctrine adalah ORM bawaan Symfony — tiap tabel direpresentasikan sebagai Entity class dengan attribute #[ORM\Entity] dan #[ORM\Column] di tiap propertinya. Beda dengan Laravel/CodeIgniter, migration di Doctrine biasanya di-GENERATE OTOMATIS dari perbedaan antara Entity dan struktur database saat ini, lewat php bin/console make:migration.
Contoh Konsep
<?php
namespace App\Entity;
use App\Repository\ProdukRepository;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: ProdukRepository::class)]
class Produk
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255)]
private string $nama;
#[ORM\Column]
private float $harga;
public function getId(): ?int
{
return $this->id;
}
public function getNama(): string
{
return $this->nama;
}
public function setNama(string $nama): static
{
$this->nama = $nama;
return $this;
}
}
// Terminal:
// php bin/console make:migration
// php bin/console doctrine:migrations:migrate
Praktikum
Buat Entity Artikel dengan properti id (auto-generated), judul (string, length 255), dan isi (text). Tulis getter dan setter untuk judul dan isi. Tulis juga dua perintah console yang dibutuhkan untuk generate dan menjalankan migration-nya sebagai komentar.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Doctrine menganut pola getter/setter EKSPLISIT (private property + public method), BEDA dengan Eloquent Laravel yang mengakses property langsung ($produk->nama) — kesalahan umum pemula pindahan dari Laravel adalah lupa bikin getter/setter dan mencoba akses $produk->nama langsung, yang akan error karena property-nya private.