Symfony - Доктрина, насколько СУММА отличается от JOIN? - PullRequest
1 голос
/ 02 июля 2019

Я работаю над Symfony 3.4, и у меня возникли проблемы с запросом, я постараюсь объяснить все ясно!

У меня есть 3 объекта Website, Mission, Gain с:

Website OneToMany Mission
Mission OneToMany Gain

У меня есть price поле в Gain сущности

Мне нужно SUM значение price для каждого Gain для каждого веб-сайта, но в моем случае это не работает.

В моем примере у меня есть:

  • 1 Website
  • 3 Mission (связано с Website)
  • 1 Gain для каждого Mission (связанного с Mission) со значениями в price: 100, 200, 300

Это мой запрос (с веб-сайтом, с миссией, с выигрышем):

$builder = $this->createQueryBuilder('w');
$builder->innerJoin('w.missions', 'm');
$builder->innerJoin('m.gains', 'g', 'WITH','g.user = w.user');
$builder->select('w', 'SUM(g.price) as gain');
$builder->addSelect('COUNT(distinct m) as nbMissions');

$results = $builder->getQuery()->getResult();

С этим запросом я имею в результате SUM gain значение 1800 вместо 600.

На самом деле это хороший результат, но умноженный на количество миссий (600 * 3). В nbMissions у меня 3.

Знаете ли вы, как я могу получить правильный результат?

Спасибо!

...