РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
38 of 258 menu

Метод innerJoin

Метод innerJoin класса QueryBuilder добавляет к запросу конструкцию INNER JOIN. Он соединяет основную сущность с другой сущностью и возвращает только те строки, для которых нашлось соответствие в обеих таблицах. Первым параметром передаётся связь (поле сущности), вторым - псевдоним для присоединяемой таблицы, третьим - условие соединения ON (необязательно).

Синтаксис

innerJoin(join, alias, condition = null)

Пример

Давайте соединим сущность Article с сущностью User по полю связи author и выведем имена авторов:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findAuthors(): array { $qb = $this->createQueryBuilder('a'); $qb->select('u.name') ->innerJoin('a.author', 'u'); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода:

[['name' => 'abcde'], ['name' => 'article']]

Пример

Давайте добавим условие соединения через третий параметр и отфильтруем пользователей с флагом active равным true:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findActiveAuthors(): array { $qb = $this->createQueryBuilder('a'); $qb->select('a.title', 'u.name') ->innerJoin('a.author', 'u', 'WITH', 'u.active = :active') ->setParameter('active', true); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода:

[['title' => 'hello', 'name' => 'abcde']]

Смотрите также

  • класс QueryBuilder,
    который строит DQL-запросы
  • метод join,
    который добавляет соединение таблиц
  • метод leftJoin,
    который добавляет левое соединение
  • метод where,
    который задаёт условие выборки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить