Когда я запускаю foreach, тогда на первой итерации я получаю объект строки таблицы r, а на следующей итерации я получаю объект строки таблицы ke. Как только итерация строки таблицы ke выполнена, на следующей итерации я получаю объект следующей строки table r, затем я получаю объект строки table ke. Это мое репо.
public function getPagedSelfReview(array $criteria)
{
$query = $this->createQueryBuilder('r');
$query ->select('r','ke')
->leftJoin(
'User\Entity\KraEvaluation', 'ke', \Doctrine\ORM\Query\Expr\Join::WITH, 'r.id = ke.kraReview and ke.evaluatedBy = :userId'
)
->andWhere('r.user = :userId')
->setMaxResults($criteria['limit'])
->setFirstResult($criteria['offset'])
->setParameter('userId', $criteria['userId'])
;
$paginator = new Paginator( $query );
return $paginator;
}
Пример:
0 - table r first row
1 - table ke first row (based on join match with r first row's column)
2 - table ke Second row (based on join match with r first row's column)
3 - table r Second row
4 - table ke first row (based on join match with r second row's column)
5 - table ke Second row (based on join match with r second row's column)
так далее
Нужно поставить как
0 - array(
0=>table r first row,
1=> array(
0=>table ke first row (based on join match with r first row's column),
1=>table ke second row (based on join match with r first row's column)
)
)
1- array(
0=>table r Second row,
1=>array(
0=>table ke first row (based on join match with r Second row's column),
1=>table ke second row (based on join match with r Second row's column)
)
)
@AlexP Извините, это была опечатка. Я обновил свой вопрос. Я использую то же, что вы предложили.





Чем сгенерированный SQL отличается от ожидаемого? Просто глядя на
$this->createQueryBuilder('r','ke'), я думаю, вы получитеSELECT r.* FROM r, ke LEFT JOIN ke WHERE ....FROM r,keпредоставит вам неявное соединение. Если это правильно, обновите до$this->createQueryBuilder('r')и$query->select('r, ke').