Study
Symfony

Doctrine Repository & Query

Penjelasan

Tiap Entity di Doctrine otomatis punya Repository (class terpisah untuk query) yang diakses lewat $entityManager->getRepository(Produk::class) atau injeksi langsung lewat type-hint ProdukRepository. Method bawaan: find($id), findAll(), findBy(['kolom' => nilai]), dan findOneBy().

Contoh Konsep

<?php

use App\Repository\ProdukRepository;

class ProdukController extends AbstractController
{
    #[Route('/produk', name: 'produk_index')]
    public function index(ProdukRepository $produkRepository): Response
    {
        $semuaProduk = $produkRepository->findAll();
        $produkMahal = $produkRepository->findBy(['harga' => 99000], ['nama' => 'ASC']);
        $satuProduk = $produkRepository->find(1);

        return $this->render('produk/index.html.twig', ['produk' => $semuaProduk]);
    }
}

Praktikum

Buat method index(ArtikelRepository $artikelRepository) yang mengambil semua artikel lewat findAll() dan mengirimkannya ke template artikel/index.html.twig.

Editor Latihan

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

Tips

Repository di Doctrine di-INJECT lewat type-hint parameter method controller (Symfony otomatis menyediakannya berkat Dependency Injection), BUKAN dipanggil lewat static method seperti Produk::all() di Eloquent — pola inject-lewat-parameter ini konsisten dipakai di banyak tempat lain di Symfony.