Chcete-li přistupovat k ->účastníkům stejným způsobem pomocí QueryBuilderu, budete muset zabudovat spojení do Query.
Příklad kódu může být něco jako:
$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 se zde používá k tomu, aby výsledek mohl být vícerozměrný.
Tento druh dotazu (testovaný pod PgSQL) přiměl Phalcon vytvořit některé následné objekty ResultSet účastníků pi
uvnitř Sady výsledků pro projekty p
.
Stále ji můžete iterovat pomocí foreach()
ale koneckonců nejsem si jistý, že to snížilo konečný počet dotazů .
Spouští se $result = $resultSet->toArray()
vytvořeno $result['pi']
zůstat jako Resultset, takže byste měli zůstat opatrní. Můžete vynutit její výpis jako pole definováním přesných sloupců v columns()
parametry. Má to svou nevýhodu – z groupBy()
už nebudete profitovat , alespoň na Phalcon 1.3.2 a PHP 5.5.3, které zde běží.