sql >> Database >  >> RDS >> Mysql

Phalcon prestatiegerelateerde vragen

Om toegang te krijgen tot ->deelnemers op dezelfde manier met QueryBuilder, moet u join in Query inbouwen.

Een codevoorbeeld kan zoiets zijn als:

$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 wordt hier gebruikt om het resultaat mogelijk multidimensionaal te maken.

Dat soort query (getest onder PgSQL) zorgde ervoor dat Phalcon enkele opeenvolgende ResultSet-objecten van deelnemers pi maakte inside Resultatensets voor projecten p .

Je kunt het nog steeds doorlopen met foreach() maar tenslotte, Ik weet niet zeker of het het uiteindelijke aantal zoekopdrachten heeft verminderd .

Afvuren van $result = $resultSet->toArray() gemaakt $result['pi'] blijf als Resultset, dus u moet daar voorzichtig mee zijn. Je kunt het forceren om als arrays te dumpen door exacte kolommen te definiëren in columns() parameters. Het heeft zijn keerzijde:u profiteert niet langer van groupBy() , in ieder geval op Phalcon 1.3.2 en PHP 5.5.3 ben ik hier actief.



  1. alleen de eerste rij in een mysql-query pakken

  2. Werk alle waarden van een kolom bij naar kleine letters

  3. MySQL-triggers om het veld bij te werken op basis van de som van de kolom uit een andere tabel

  4. Rails 3, ActiveRecord, PostgreSQL - .uniq-opdracht werkt niet?