Doctrine - načtení první fotky z fotogalerie ve výpisu položek rubrika: Programování: PHP
V Doctrine mám entitu Article (bez újmy na obecnosti) a entitu Photo. Fotky jsou k článku připojeny asociací one to many. Ve výpisu článků chci zobrazit ke každému jednu fotku, nejlépe tu první.
Ovšem neumím to udělat elegantně na konstantní počet dotazů. Defaultně se při výpisu 20 článků pošle 20 dotazů na získání všech fotek pro jednotlivé články.
Napadá někoho nějaké pěkné řešení?
Tady i záleží na databázi, na které to běží (u některých mohou být některé přístupy dost neefektivní). Osobně mám vyzkoušené dva postupy:
- Mám u fotek označeno, která se má načítat (něco jako typ = 'hlavni') a tahám to pomocí LEFT JOIN. Pokud se ale dostanou dvě "hlavní" fotky k článku, tak je to problém.
- Načítám nadvakrát - nejdříve články, které chci (zahrnuje stránkování apod.), a z nich vytáhnu seznam klíču, které použiju k načtení fotek přes WHERE article IN (1, 2, 3). Pak to spojím pomocí mapy (= asociativní pole, hashtabulka, apod.). Je to vcelku pružné a když je správny index, tak i skoro stejně efektivní jako JOIN.
Obojí ale jde proti použití ORM - tam by z principu bylo nutné pro každý článek načíst všechny fotky (tj. celou kolekci), jinak to nebude možné spravovat (pokud na to Doctrine nemá nějaký hack, tohle usuzuju z běžných principů, které se používají v ORM).
Pro zobrazení všech 6 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře