sql >> Databasteknik >  >> RDS >> Mysql

Phalcon prestandarelaterade frågor

För att få tillgång till ->deltagare på samma sätt med QueryBuilder, måste du bygga in join i Query.

Kodexempel kan vara något i stil med:

$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 används här för att göra resultatet möjligen flerdimensionellt.

Den typen av fråga (testad under PgSQL) fick Phalcon att skapa några efterföljande ResultSet-objekt för deltagarna pi inuti resultatuppsättningar för projekt p .

Du kan fortfarande iterera genom den genom att använda foreach() men trots allt, jag är inte säker på att det minskade det slutliga antalet frågor .

Avfyrar $result = $resultSet->toArray() gjorde $result['pi'] förbli som Resultset, så du bör vara försiktig med det. Du kan tvinga den att dumpa som matriser genom att definiera exakta kolumner i columns() parametrar. Det har sin baksida - du kommer inte längre att tjäna på groupBy() , åtminstone på Phalcon 1.3.2 och PHP 5.5.3 kör jag här.



  1. MySQL pärla på OSX 10.7 Lion

  2. Hur importerar jag en .sql-fil i mysql-databasen med PHP?

  3. Dolda funktioner i Oracle

  4. Hur returnerar jag id:t för den infogade raden med hjälp av förberett uttalande?