За достъп до ->участниците по същия начин с помощта на QueryBuilder, ще трябва да вградите присъединяване в Query.
Примерът за код може да бъде нещо като:
$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 се използва тук, за да направи резултата вероятно многоизмерен.
Този вид заявка (тествана под PgSQL) накара Phalcon да създаде някои последващи обекти ResultSet на участниците pi
вътре Резултати за проекти p
.
Все още можете да го преглеждате, като използвате foreach()
но в края на краищата, не съм сигурен, че е намалило окончателния брой заявки .
Задействане на $result = $resultSet->toArray()
направи $result['pi']
остане като Resultset, така че трябва да бъдете внимателни с това. Можете да го принудите да изхвърля като масиви, като дефинирате точни колони в columns()
параметри. Той има своя недостатък - вече няма да печелите от groupBy()
, поне на Phalcon 1.3.2 и PHP 5.5.3 работи тук.