Để truy cập -> người tham gia theo cùng một cách sử dụng QueryBuilder, bạn sẽ phải xây dựng kết nối vào Truy vấn.
Ví dụ mã có thể là một cái gì đó như:
$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()
ở đây được sử dụng để làm cho kết quả có thể đa chiều.
Loại truy vấn đó (được thử nghiệm trong PgSQL) đã khiến Phalcon tạo một số đối tượng ResultSet tiếp theo của những người tham gia pi
bên trong Tập kết quả cho các dự án p
.
Bạn vẫn có thể lặp lại nó bằng cách sử dụng foreach()
nhưng sau tất cả, Tôi không chắc nó có làm giảm số lượng truy vấn cuối cùng hay không .
Kích hoạt $result = $resultSet->toArray()
made $result['pi']
vẫn là Tập kết quả, vì vậy bạn nên thận trọng về điều đó. Bạn có thể buộc nó phải kết xuất dưới dạng mảng bằng cách xác định các cột chính xác trong columns()
tham số. Nó có mặt trái của nó - bạn sẽ không còn kiếm được lợi nhuận từ groupBy()
, ít nhất là trên Phalcon 1.3.2 và PHP 5.5.3, tôi đang chạy ở đây.