NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Lenka Brhelová:25.11.2017 12:58

Dobrý den, chtěla bych Vás poprosit o radu s jedním DQL dotazem :)
Vytahuji z databáze statusy dle kategorie. Chtěla bych, aby uživatel viděl, kolik je ke statusu komentářů.

return $this->em->createQuery('
        SELECT PARTIAL s.{id, title, content, title, time, category}, PARTIAL u.{id, route, name}
        FROM App\Model\Entities\Status s
        INNER JOIN s.user u
        WHERE s.section =  ' . $section . ' AND s.category = :category
        ORDER BY s.time DESC
    ')
    ->setParameter('category', $category)
    ->setMaxResults(10)
    ->setFirstResult(($page - 1) * 10)
    ->getResult();

Dále mám entitu Comment, která má vazbu ManyToOne na status.
Věděli byste prosím někdo, jak tam dostat něco jako

COUNT(s.comments)

?
Děkuji mnohokrát :-D

 
Odpovědět
25.11.2017 12:58
Avatar
Neaktivní uživatel:27.11.2017 1:32

zkus

->getRowCount();
Nahoru Odpovědět
27.11.2017 1:32
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:27.11.2017 1:37

Nestihl jsem upravit.
Nebo normalne v

createQuery()
Nahoru Odpovědět
27.11.2017 1:37
Neaktivní uživatelský účet
Avatar
Odpovídá na Lenka Brhelová
Martin Konečný (pavelco1998):27.11.2017 12:54

Ahoj,
DQL dotaz s COUNT(s.comments) by měl normálně fungovat, ale udělá ti to potom trochu jiný formát výsledku. Nejsem si teď z hlavy jistý, ale mám pocit, že když uděláš dotaz ve tvaru

SELECT status, user, COUNT(status.comments) AS commentsCount
FROM Entities\Status status
INNER JOIN status.user user

tak dostaneš pole ve formátu

array(
        array(
                0 => entita Status,
                1 => entita User,
                "commentsCount" => výsledek COUNT()
        ),
        array(
                0 => entita Status,
                1 => entita User,
                "commentsCount" => výsledek COUNT()
        ),
        // atd.
)

Mimochodem, ten parametr $section bych taktéž přesunul do metody setParameter().

Nahoru Odpovědět
27.11.2017 12:54
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.