sql >> Database teknologi >  >> RDS >> Mysql

Phalcon præstationsrelaterede forespørgsler

For at få adgang til ->deltagere på samme måde ved brug af QueryBuilder, skal du indbygge join ind i Query.

Kodeeksempel kunne være noget som:

$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 bruges her til at gøre resultatet muligvis multidimensionelt.

Den slags forespørgsler (testet under PgSQL) fik Phalcon til at oprette nogle efterfølgende ResultSet-objekter af deltagere pi inde i resultatsæt for projekter p .

Du kan stadig gentage den ved at bruge foreach() men trods alt er jeg ikke sikker på, at det reducerede det endelige antal forespørgsler .

Udløser $result = $resultSet->toArray() lavet $result['pi'] forbliv som resultatsæt, så du bør være forsigtig med det. Du kan tvinge den til at dumpe som arrays ved at definere nøjagtige kolonner i columns() parametre. Det har sin ulempe - du vil ikke længere tjene på groupBy() , i det mindste på Phalcon 1.3.2 og PHP 5.5.3 kører jeg her.



  1. Forvirret over UPDLOCK, HOLDLOCK

  2. Effektiv overvågning af MySQL med SCUMM Dashboards:Første del

  3. Konfiguration af databasemailmeddelelser i MS SQL Server

  4. Kom godt i gang med PostgreSQL Streaming Replication