Study
Symfony

Doctrine Fixtures

Penjelasan

Fixtures adalah versi Symfony/Doctrine dari seeder — class yang mengisi data awal ke database, dibuat lewat php bin/console make:fixtures (butuh paket doctrine/doctrine-fixtures-bundle), dijalankan lewat php bin/console doctrine:fixtures:load.

Contoh Konsep

<?php

namespace App\DataFixtures;

use App\Entity\Produk;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;

class ProdukFixtures extends Fixture
{
    public function load(ObjectManager $manager): void
    {
        $produk1 = new Produk();
        $produk1->setNama('Kaos CompileDaily');
        $manager->persist($produk1);

        $manager->flush(); // WAJIB dipanggil supaya data benar-benar tersimpan
    }
}

// Jalankan lewat terminal:
// php bin/console doctrine:fixtures:load

Praktikum

Buat ArtikelFixtures yang membuat minimal 3 record Artikel lewat new Artikel() + setJudul()/setIsi() + $manager->persist(), diakhiri satu $manager->flush() di luar loop. Tulis juga perintah console untuk menjalankan fixture itu sebagai komentar.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

$manager->persist() cuma MENANDAI entity untuk disimpan — data BELUM benar-benar masuk ke database sampai $manager->flush() dipanggil. Untuk banyak record, lebih efisien memanggil persist() berkali-kali di dalam loop tapi flush() SEKALI SAJA di akhir, bukan di dalam loop.