symfony Query builder -- Inner join трёх таблиц (пример)

Пример создания внутреннего объединения трёх таблиц с использованием QueryBuilder-а.
Решает вопрос поиска продуктов, у которых обязательно есть фото, относящихся к определённой категории:

$products = $this->getEntityManager()
    ->createQueryBuilder()
    ->select('p')
    ->from(Product::class, 'p')
    ->innerJoin(ProductPhoto::class, 'pp', 'with', 'p.id = pp.product')
    ->innerJoin(CategoryProduct::class, 'cp', 'with', 'p.id = cp.product')
    ->where('cp.category = '.$category->getId())
    ->orderBy('p.id', 'ASC')
    ->getQuery()
    ->getResult();

В запросе используются 3 таблицы: product, category_product и product_photo.
В Symfony доступ к ним осуществляется через классы сущностей, соответствующих таблицам в БД: Product, CategoryProduct и ProductPhoto.

Источник

Всё о QueryBuilder-е

vedro-compota's picture

после переноса по-идее достаточно одного таб-а

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

по-хорошему перед кодом надо отдельно указывать и имена таблиц, которые соединяются. Начинающему это может быть не очевидно.

_____________
матфак вгу и остальная классика =)