doctrine count joined entity

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jarda256
Člen | 130
+
0
-

Ahoj, mám takový dotaz. Používám doctrine a mám obousměrnou vazbu oneToMany mezi entitami a v jedné z nich mám tedy arrayCollection checks a funkci getCountChecks. A používám toto. Když smažu poslední dva řádky (addSelect, groupBy), tak getCountChecks vrací správně, ale když nechám, tak vrací 1 (pořípadě 0 když tam nic není), ale já bych potřeboval obojí funkční. Neví někdo jak na to? (nemůžu použít count bez HIDDEN – opravdu ne)

$query = $this->em->createQueryBuilder()
            ->select('r,c,leader,site,team,event')
            ->from(Registration::class, 'r')
            ->join('r.checks', 'c')
            ->join('r.leader', 'leader')
            ->join('r.site', 'site')
            ->join('leader.team', 'team')
            ->join('r.event', 'event')
			->addSelect('count(c.id) AS HIDDEN cx')
            ->groupBy('r.id');
function getCountChecks()
   {
       $count = $this->getChecks()->count();
       return $count;
   }
jarda256
Člen | 130
+
0
-

Řekl bych, že ten count mi nějak vyřadí ten join. Ale moc to nechápu

Svaťa Šimara
Člen | 98
+
0
-

Podívej se na výsledek, který Ti to nahydratuje (třeba v poli). Řekl bych, že díky groupování podle registration se původní roznásobení řádků joinem na checks smrskne opět na jeden záznam. Neboli z checks zůstane pouze náhodně jeden (první vyselectovaný). Toto by ve slušné databázi projít ani nemělo, protože selectuješ víc, než podle čeho groupuješ.

jarda256
Člen | 130
+
0
-

@Fafin Jenže když smažu groupBy, tak zase count není správný

Svaťa Šimara
Člen | 98
+
0
-

@jarda256 Podívej se, jak vypadá hydratovaný výsledek s a bez groupBy. A na základě tohoto výsledku si spočítej počty.