Mysql
 sql >> Base de données >  >> RDS >> Mysql

Questions relatives aux performances de Phalcon

Pour accéder aux ->participants de la même manière en utilisant QueryBuilder, vous devrez créer une jointure dans Query.

L'exemple de code pourrait être quelque chose comme :

$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 est utilisé ici pour rendre le résultat éventuellement multidimensionnel.

Ce type de requête (testé sous PgSQL) a obligé Phalcon à créer des objets ResultSet ultérieurs des participants pi dans les jeux de résultats pour les projets p .

Vous pouvez toujours le parcourir en utilisant foreach() mais après tout, je ne suis pas sûr que cela ait réduit le nombre de requêtes finales .

Lancement de $result = $resultSet->toArray() fait $result['pi'] restez comme Resultset, vous devez donc rester prudent à ce sujet. Vous pouvez le forcer à se vider sous forme de tableaux en définissant des colonnes exactes dans columns() paramètres. Il a son inconvénient - vous ne profiterez plus de groupBy() , au moins sur Phalcon 1.3.2 et PHP 5.5.3 je tourne ici.