Untuk mengakses ->peserta dengan cara yang sama menggunakan QueryBuilder, Anda harus membangun join ke Query.
Contoh kode dapat berupa:
$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 digunakan di sini untuk membuat hasil yang mungkin multidimensi.
Permintaan semacam itu (diuji di bawah PgSQL) membuat Phalcon membuat beberapa objek ResultSet berikutnya dari peserta pi
di dalam Hasil untuk proyek p
.
Anda masih dapat mengulanginya dengan menggunakan foreach()
tapi bagaimanapun juga, Saya tidak yakin itu mengurangi jumlah kueri akhir .
Menjalankan $result = $resultSet->toArray()
membuat $result['pi']
tetap sebagai Resultset, jadi Anda harus tetap berhati-hati dalam hal itu. Anda dapat memaksanya untuk dibuang sebagai array dengan mendefinisikan kolom yang tepat di columns()
parameter. Ini memiliki kelemahan - Anda tidak akan lagi mendapat untung dari groupBy()
, setidaknya di Phalcon 1.3.2 dan PHP 5.5.3 saya berjalan di sini.