Symfony Doctrine DQL как добавить SELECT в СУММУ основного SELECT - PullRequest
0 голосов
/ 29 февраля 2020

На самом деле, я хотел бы воспроизвести с Doctrine этот обычный SQL Запрос:

SELECT SUM(b.nb_places * (SELECT pricing FROM param p WHERE t.date BETWEEN p.from_date AND p.to_date)) as gains from booking b INNER JOIN tour t ON b.tour_id = t.id;

Это вычисляет общий выигрыш по ценам между двумя датами.

Я написал этот DQL в репозитории:

    public function allBooking() {
        $query = $this->manager->createQuery(
            'SELECT 
                 SUM(b.nbPlaces * SELECT p.pricing FROM \App\Entity\Param p WHERE t.date BETWEEN p.fromDate AND p.toDate)
        FROM App\Entity\Booking b JOIN b.tour t'
    );
    return $query->getResult();
}

Но, запустив этот запрос, я получил:

[Syntax Error] line 0, col 24: Error: Expected Literal, got 'SELECT' (500 Internal Server Error)

Как мне получить этот запрос с помощью DQL или с помощью QueryBuilder?

Thx для помощь

1 Ответ

0 голосов
/ 01 марта 2020

Вы забыли поставить

SELECT p.pricing FROM \App\Entity\Param p WHERE t.date BETWEEN p.fromDate AND p.toDate

в дополнительные скобки.

Это должно выглядеть так:

$query = $this->manager->createQuery(
    'SELECT SUM(b.nbPlaces * (SELECT p.pricing FROM \App\Entity\Param p WHERE t.date BETWEEN p.fromDate AND p.toDate))
    FROM App\Entity\Booking b JOIN b.tour t'
);
...