NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Načíst entitu se specifickou referencí | Doctrine 2

Aktivity
Avatar
Petr Novotný:25.10.2017 22:14

Ahojte, začínám s Doctrine 2 a nevím jak si poradit s následující věcí.
Mám uživatele, který má nějaké projekty ve vazbě ManyToMany. Ale vazba musí obsahovat ještě dodatečné informace, což znamená, že mám 3 entity. Project | ProjectUser | User.
Když chci uživateli vypsat jeho projekty, tak mám kód:

$this->template->project_users = $this->getUserReference()->projects->toArray();

potíž je v tom, že toto pole proháním foreach, kde potřebuji hrábnout na referenci projektu.

{foreach $project_users as $project_user}
        {$project_user->project->name}
        {$project_user->permissions}
{/foreach}

Vede to k tomu, že doctrine pokládá jeden dotaz na jeden průchod cyklem.
Což vede třeba ke 20 zbytečným dotazům na databázi.
Nevíte jak toto řešit?
Moc by mi to pomohlo.
Předem moc děkuji!

 
Odpovědět
25.10.2017 22:14
Avatar
Odpovídá na Petr Novotný
Martin Konečný (pavelco1998):25.10.2017 23:42

Ahoj,
u vazby mezi ProjectUser <-> Project si dej fetch="EAGER" (předpokládám, že je mezi tím vazba 1:1, tedy OneToOne). Entita Project se ti přes JOIN rovnou načte k entitě ProjectUser.
Druhá varianta je, pokud nechceš entitu Project vyhledávat vždy, udělat si tento konkrétní dotaz přes DQL, kde uděláš JOIN ručně.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.10.2017 23:42
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.