doctrine count joined entity
- jarda256
- Člen | 130
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;
}
- Svaťa Šimara
- Člen | 98
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š.
- Svaťa Šimara
- Člen | 98
@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.