Om toegang te krijgen tot ->deelnemers op dezelfde manier met QueryBuilder, moet u join in Query inbouwen.
Een codevoorbeeld kan zoiets zijn als:
$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 wordt hier gebruikt om het resultaat mogelijk multidimensionaal te maken.
Dat soort query (getest onder PgSQL) zorgde ervoor dat Phalcon enkele opeenvolgende ResultSet-objecten van deelnemers pi
maakte inside Resultatensets voor projecten p
.
Je kunt het nog steeds doorlopen met foreach()
maar tenslotte, Ik weet niet zeker of het het uiteindelijke aantal zoekopdrachten heeft verminderd .
Afvuren van $result = $resultSet->toArray()
gemaakt $result['pi']
blijf als Resultset, dus u moet daar voorzichtig mee zijn. Je kunt het forceren om als arrays te dumpen door exacte kolommen te definiëren in columns()
parameters. Het heeft zijn keerzijde:u profiteert niet langer van groupBy()
, in ieder geval op Phalcon 1.3.2 en PHP 5.5.3 ben ik hier actief.