Study
Symfony

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.

Editor Latihan

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.