Pergunta

Como posso usar o resultado da função Agregate em onde em Doutrina?

Por exemplo eu quero saber usuário com muito números bobos.

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

Como posso acessar o users_phonenumber_count , em onde em dql?

Foi útil?

Solução

Você precisa usar TENDO, não WHERE. Além disso, você precisa grupo por algo que está realmente em sua consulta, neste caso u.name. Assumindo u.name é único -. Se não, você precisa grupo por tanto u.id e 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

Outras dicas

Não me lembro de detalhes exatos de como eu fiz isso, mas lembre-se que ele teve que usar "ter"

Isto é devido as obras maneira SQL, não especificamente doutrina - onde não se pode comparar valores computados, você tem que usar ter (ou você poderia fazer ONDE COUNT (algo)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top