Я использую Doctrine querybuilder в Symfony2 для создания запроса для извлечения сущностей.
Мой текущий код выглядит следующим образом:
$repository = $this->getDoctrine()->getRepository('AaaBundle:Application');
$queryBuilder = $repository->createQueryBuilder('a');
$queryBuilder
->addSelect('u')
->addSelect('i')
->orderBy('a.created_date', 'DESC')
->leftJoin('a.created_by', 'u')
->leftJoin('a.installations', 'i')
//->where('i.page = :page')
//->setParameter('page', $found)
;
Теперь я могу использовать это, чтобы получить все страницы независимо от их установки или нет.
Но я хочу только присоединиться к ним, если доступна страница $found
(так что если есть приложение для приложения, но на другой странице, установка не будет объединена). Если я не укажу предложение where, оно покажет только те приложения, которые имеют установку для этой страницы. Я хочу, чтобы все приложения с или без установок для страницы.
В SQL я могу получить это, добавив AND
к соединению
LEFT JOIN installations i ON a.id = i.app AND i.page = :page
Таким образом, я получаю информацию о установке для приложения, которое имеет установку на странице, но я получаю нулевые значения в столбцах для приложения, у которых есть установки на других страницах или вообще нет.
Есть ли способ сделать это в Doctrine, или мне лучше просто получить все установки для каждого приложения, а затем проверить на найденной странице с помощью php?