Per accedere a ->partecipanti allo stesso modo utilizzando QueryBuilder, dovrai creare un join in Query.
L'esempio di codice potrebbe essere qualcosa del tipo:
$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 è usato qui per rendere il risultato possibilmente multidimensionale.
Quel tipo di query (testata in PgSQL) ha fatto sì che Phalcon creasse alcuni oggetti ResultSet successivi dei partecipanti pi
all'interno di Resultsets per i progetti p
.
Puoi ancora scorrere usando foreach()
ma dopo tutto, non sono sicuro che abbia ridotto il numero di query finali .
Attivazione di $result = $resultSet->toArray()
fatto $result['pi']
rimani come Resultset, quindi dovresti rimanere cauto su questo. Puoi forzarne il dump come array definendo colonne esatte in columns()
parametri. Ha il suo svantaggio:non trarrai più profitto da groupBy()
, almeno su Phalcon 1.3.2 e PHP 5.5.3 sono in esecuzione qui.