Aktywne Wpisy
dbijou +3433
Bążur Mirko! ʕ•ᴥ•ʔ
Chłop się żeni - zatem z tej okazji robimy #rozdajo !
Do wygrania pierścionek w kwocie do 3000zł #inflacja (⌐ ͡■ ͜ʖ ͡■)
Pierścionek złoty próby 585 (do wyboru kolor kruszcu różowe, żółte i białe ) w okolicy 1.5-2g
Wzory przedstawimy w pw (właściwie nie ma rzeczy której nie damy rady zrobić ( ͡º ͜ʖ͡º))
Chłop się żeni - zatem z tej okazji robimy #rozdajo !
Do wygrania pierścionek w kwocie do 3000zł #inflacja (⌐ ͡■ ͜ʖ ͡■)
Pierścionek złoty próby 585 (do wyboru kolor kruszcu różowe, żółte i białe ) w okolicy 1.5-2g
Wzory przedstawimy w pw (właściwie nie ma rzeczy której nie damy rady zrobić ( ͡º ͜ʖ͡º))
Julius_90 +20
Taka sytuacja. Mam w bazie danych 2 tabele: user, product i vote. W tabeli vote zapisuję:
userid | type | recordid. W polu userid przechowuję id użytkownika który głosował, w polu type przechowuję typ głosowania (użytkownik lub produkt), w polu recordid przechowuję id rekordu z tabeli user lub product.
Chciałbym pobrać ile głosów zostało oddane na użytkownika, dlatego napisałem taki SQL:
SELECT
*,
COUNT(v.record_id) AS user_votes
FROM user AS u
LEFT JOIN vote AS v ON v.record_id = u.id
WHERE u.roles LIKE '%ROLE_DESIGNER%'
GROUP BY u.id
Nie wiem jak to zapisać w doctrine query builder, ponieważ taki zapis:
$qb = $this->createQueryBuilder('u');
$qb->leftJoin('u.userVote', 'v');
$qb->select('u');
$qb->addSelect('COUNT(v.recordId) AS user_votes');
$qb->where("u.roles LIKE '%ROLE_DESIGNER%'");
$qb->addOrderBy('user_votes', 'DESC');
$qb->addGroupBy('u.id');
robi JOIN według userid, przez co otrzymuję niepoprawny wynik. Próbowałem użyć WITH o w taki sposób:
$qb = $this->createQueryBuilder('u');
$qb->leftJoin('u.userVote', 'v', 'WITH', 'v.recordId = u.id');
$qb->select('u');
$qb->addSelect('COUNT(v.recordId) AS user_votes');
$qb->where("u.roles LIKE '%ROLE_DESIGNER%'");
$qb->addOrderBy('user_votes', 'DESC');
$qb->addGroupBy('u.id');
Ale otrzymałem nie do końca poprawny rezultat, tzn. poprawnie musi być tak:
user1 - 1 głos
user2 - 1 głos
user3 - 0 głosów
ja otrzymałem:
user1 - 1 głos
user2 - 0 głosów
user_3 - 0 głosów
W jaki sposób zrobić JOIN na polach nie zmapowanych w encjach?
#php #doctrine #symfony2 #symfony
$query = $this->getEntityManager()->createQuery("SELECT u, COUNT(v.recordId) as user_votes
FROM AppBundle\Entity\User u
LEFT JOIN AppBundle\Entity\Vote v WITH v.recordId = u.id
WHERE u.roles LIKE '%ROLE_DESIGNER%'
GROUP BY u.id
ORDER BY user_votes DESC");
Nie ma to jak SQL ᕙ(⇀‸↼‶)ᕗ