Para acceder a los ->participantes de la misma manera usando QueryBuilder, deberá crear la unión en Query.
El ejemplo de código podría ser algo como:
$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 usa aquí para hacer que el resultado sea posiblemente multidimensional.
Ese tipo de consulta (probada bajo PgSQL) hizo que Phalcon creara algunos objetos ResultSet posteriores de los participantes pi
dentro de conjuntos de resultados para proyectos p
.
Todavía puede iterarlo usando foreach()
pero después de todo, no estoy seguro de que haya reducido el número de consultas finales .
Disparando $result = $resultSet->toArray()
hecho $result['pi']
permanezca como conjunto de resultados, por lo que debe ser cauteloso al respecto. Puede obligarlo a volcarse como matrices definiendo columnas exactas en columns()
parámetros. Tiene su inconveniente:ya no se beneficiará de groupBy()
, al menos en Phalcon 1.3.2 y PHP 5.5.3 estoy ejecutando aquí.