Mam następujące wyrażenie sql, które chcę przekształcić w konstruktora kwerend doktryny. Celem jest, aby policzyć ile istnieją wskaźniki o wartości znamionowej 1, o wartości znamionowej 2.Doctrine Query Builder Wybierz liczbę z przypadkiem
SELECT
COUNT(CASE WHEN rating.rating = 1 THEN rating.rating END) as rat1,
COUNT(CASE WHEN rating.rating = 2 THEN rating.rating END) as rat2
FROM rating
Ta instrukcja SQL działa poprawnie - ale gdy próbuję przekształcić go w oświadczeniu doktrynie nie ma już. Kiedy nic nie powinno zostać policzone (ponieważ nie istnieją oceny dla tej wartości), zwraca mi "1" zamiast 0. Jak mogę powiedzieć doktrynie, aby po prostu zwróciła zero, gdy nie ma co liczyć? Próbowałem go usuwając „else 0”, ale wtedy pojawia się błąd, że wymagana jest ta część ..
return $qb
->addSelect('COUNT(CASE WHEN r.rating = 1 THEN r.rating ELSE 0 END) as rat_1')
->addSelect('COUNT(CASE WHEN r.rating = 2 THEN r.rating ELSE 0 END) as rat_2')
->getQuery()
->getResult();
Pozdrowienia,
"sum" is not required - example: votings 2,2,2,2,2 should return 5 , because the rating with value 2 got voted 5 times.
użycie 'sum' zamiast' count' aby uzyskać to, czego potrzebują. –
hej, nie chcę podsumować wartości 1 + 1 + 1 + 1 lub 2 + 2 + 2 + 2 +, chcę policzyć, jak często wartość została oceniona, np. 2 + 2 + 2 + 2 = 4 (razy dla oceny z wartością 2). Pozdrawiam – user3746259