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

Метод leftJoin

Метод leftJoin класса QueryBuilder добавляет к DQL-запросу конструкцию LEFT JOIN. Он соединяет основную сущность с указанной сущностью и возвращает все строки из левой таблицы, даже если в правой нет соответствующих записей. Первым параметром передаётся связь (поле сущности), вторым - алиас присоединяемой сущности, третьим - условие WITH (необязательно).

Синтаксис

leftJoin(join, alias, condition = null)

Пример

Давайте выберем статьи вместе с их категориями, включая статьи без категории:

<?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 findAllWithCategory(): array { $qb = $this->createQueryBuilder('a'); $qb->leftJoin('a.category', 'c') ->addSelect('c'); return $qb->getQuery()->getResult(); } } ?>

Пример

Давайте добавим условие WITH к соединению, чтобы отфильтровать присоединяемые записи:

<?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 findWithActiveCategory(): array { $qb = $this->createQueryBuilder('a'); $qb->leftJoin('a.category', 'c', 'WITH', 'c.active = :active') ->addSelect('c') ->setParameter('active', true); return $qb->getQuery()->getResult(); } } ?>

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

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