Доктрина - фильтр по иностранной совокупной стоимости

StackOverflow https://stackoverflow.com/questions/1643499

  •  10-07-2019
  •  | 
  •  

Вопрос

как я могу использовать результат функции Agregate и где в Doctrine?

Например, я хочу знать пользователя с глупыми номерами.

SELECT  u.name, COUNT(p.id) AS users_phonenumber_count
FROM    users u

    INNER JOIN phonenumbers p ON p.user_id = u.id
WHERE
    users_phonenumber_count > 10
GROUP BY
    u.id

Как я могу получить доступ к users_phonenumber_count в Dql?

Это было полезно?

Решение

Вам нужно использовать HAVING, а не ГДЕ. Кроме того, вам нужно сгруппировать что-то, что на самом деле в вашем запросе, в данном случае u.name. Предполагая, что u.name уникально - если нет, вам нужно сгруппировать по u.id и u.name.

SELECT  u.name, COUNT(*) AS users_phonenumber_count
FROM    users u

    INNER JOIN phonenumbers p ON p.user_id = u.id
GROUP BY
    u.name
HAVING
    count(*) > 10

Другие советы

Я не могу вспомнить точные детали того, как я это сделал, но помните, что он должен был использовать " HAVING "

Это связано с тем, как работает SQL, а не с доктриной - ГДЕ не может сравнивать вычисленные значения, вы должны использовать наличие (или вы можете сделать ГДЕ СЧЕТ (что-то) < что-то)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top