mysql LEFT JOIN -- Пример SQL и QueryBuilder запроса

Задача

Получить все продажи (из таблицы Sale), в которых нет Возвратов(строк из связаннос с Sale таблицей Rejection(по ключу sale_id)).

SQL

Можно с помощью LEFT JOIN с условием

SELECT * FROM `sale` left join `rejection` using(`id`) where sale_id is null;

PHP

Если вы используете в своём проекте Doctrine, с помощью QueryBuilder написать запрос с LEFT JOIN можно так:

/**
     * Получит продажи, в которых нет Rejection-ов
     * 
     * @return array | Sale[]
     */
    public function getNoRejection(): array
    {
        return $this->getEntityManager()
            ->createQueryBuilder()
            ->select('s')
            ->from(Sale::class, 's')
            ->leftJoin(Rejection::class, 'r', 'with', "r.sale = s.id")
            ->where('r.sale is null')
            ->orderBy('s.id', 'ASC')
            ->getQuery()
            ->getResult();
    }

Источники

vedro-compota's picture

В PHP можно использовать QueryBuilder, чтобы написать запрос с LEFT JOIN:

где именно? Это не PHP. а что-то написанное на PHP?

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

melisa's picture

Это объект для работы с БД в Doctrine.
Добавила пометку в статье.