Ahoj,

prosím o radu. Pokud na nějakém místě např. vypisuji články včetně názvů kategorií s využitím partial objektů:

$qb = $this->em->getRepository(Article::class)
    ->createQueryBuilder('a')
        ->innerJoin('a.category', 'c')
        ->addSelect('partial c.{id, name}');

$articles = $qb->getQuery()->getResult();

foreach ($articles as $article) {
    echo "$article->name, $article->url, $article->content ... (z kategorie: {$article->category->name})";
}

a poté si někde jinde potřebuji vytáhnout kategorii:

$category = $this->em->getRepository(Category::class)->find(1);

Tak v závislosti na tom, jestli se kategorie s id 1 selectovala společně s články v prvním dotazu, dostávám buď částečný object (selectovala) nebo úplný objekt (neselectovala). Což je dost nepříjemné a nekonzistentní chování. Spíš bych očekával, že ve druhém dotazu dostanu vždy kompletní objekt a ne z paměti, pokud tam nějaký je.

Jedná se o feature nebo o chybu? Zatím to řeším voláním $this->em->clear(Category::class) po dotazech s využitím partial.

Díky. Používám kdyby/doctrine ~3.0@dev.


You must first log in to participate in this discussion