Метод 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,
который задаёт условие выборки