QueryBuilderを使用して同じ方法で->参加者にアクセスするには、Queryに結合を組み込む必要があります。
コード例は次のようになります:
$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は、結果を多次元にするためにここで使用されます。
この種のクエリ(PgSQLでテスト済み)により、Phalconは参加者の後続のResultSetオブジェクトをいくつか作成しましたpi
プロジェクトの結果セット内p
。
foreach()
を使用して、それを繰り返すことができます。 しかし結局のところ、最終的なクエリ数が減ったかどうかはわかりません 。
$result = $resultSet->toArray()
を起動します $result['pi']
を作成しました 結果セットのままなので、注意が必要です。 columns()
で正確な列を定義することにより、配列として強制的にダンプすることができます。 パラメータ。 欠点があります。groupBy()
から利益を得ることができなくなります。 、少なくともここで実行されているPhalcon1.3.2およびPHP5.5.3imでは。