För att få tillgång till ->deltagare på samma sätt med QueryBuilder, måste du bygga in join i Query.
Kodexempel kan vara något i stil med:
$queryBuilder = $this->getDI()->getModelsManager()
->createBuilder()
->columns(['p.id','participants.*'])
->addFrom('Entity\Projects', 'p')
->leftJoin('Entity\Participants', 'participants.projectId = p.id', 'participants')
->groupBy('p.id, participants.id')
->orderBy('p.id ASC');
$resultSet = $queryBuilder->getQuery()->execute();
groupBy()
by används här för att göra resultatet möjligen flerdimensionellt.
Den typen av fråga (testad under PgSQL) fick Phalcon att skapa några efterföljande ResultSet-objekt för deltagarna pi
inuti resultatuppsättningar för projekt p
.
Du kan fortfarande iterera genom den genom att använda foreach()
men trots allt, jag är inte säker på att det minskade det slutliga antalet frågor .
Avfyrar $result = $resultSet->toArray()
gjorde $result['pi']
förbli som Resultset, så du bör vara försiktig med det. Du kan tvinga den att dumpa som matriser genom att definiera exakta kolumner i columns()
parametrar. Det har sin baksida - du kommer inte längre att tjäna på groupBy()
, åtminstone på Phalcon 1.3.2 och PHP 5.5.3 kör jag här.