Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consultas relacionadas ao desempenho do Phalcon


Para acessar ->participantes da mesma forma usando o QueryBuilder, você terá que construir join no Query.

O exemplo de código poderia 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 é usado aqui para tornar o resultado possivelmente multidimensional.

Esse tipo de consulta (testada em PgSQL) fez com que Phalcon criasse alguns objetos ResultSet subsequentes de participantes pi dentro de conjuntos de resultados para projetos p .

Você ainda pode iterar usando foreach() mas, afinal, não tenho certeza se isso reduziu a contagem final de consultas .

Disparando $result = $resultSet->toArray() feito $result['pi'] permanecer como conjunto de resultados, então você deve ficar cauteloso sobre isso. Você pode forçar o dump como arrays definindo colunas exatas em columns() parâmetros. Tem sua desvantagem - você não lucrará mais com groupBy() , pelo menos no Phalcon 1.3.2 e PHP 5.5.3 estou rodando aqui.