Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2][Symfony2]Grupowanie wyników w widoku
Forum PHP.pl > Forum > PHP > Frameworki
ShaggyAG
Witam,

Mam w bazie danych tabele X z kolumnami id | date | time | removed
Dane pobieram zapytaniem:
  1. $entities = $repo->createQueryBuilder('s')
  2. ->where('s.date >= :fromDate AND s.removed=0')
  3. ->setParameter(':fromDate', $fromDate)
  4. ->addOrderBy('s.date', 'ASC')
  5. ->addOrderBy('s.time', 'ASC')
  6. ->getQuery();

uzyskany wynik w widoku chce wyświetlić w ten sposób by wyniki posiadające tą samą wartość 'date' były wewnątrz tego samego elementu.
czyli mniej wiecej tak
  1. <div>
  2. wyniki z date =1
  3. </div>
  4. <div>
  5. wyniki z date =2
  6. </div>
  7. ...

A teraz moje pytanie:)
Na jakim etapie najlepiej pogrupować te dane?
Czy da się to zrobić na poziomie doctrine?
by zwróciło wynik w zagnieżdżonych tablicach?
czy lepiej obrobić te dane pętlami for w kontrolerze?
czy może bawić sie z tym w widoku?

Z góry dziękuje za rady
CuteOne
  1. $qb = $this->_em->createQueryBuilder();
  2. $qb->select('a.id', $qb->expr()->count('a.abc'))
  3. ->from('Entities\ABC', 'a')
  4. ->groupBy('a.id');
  5.  
  6. var_dump($qb->getQuery()->getResult());
ShaggyAG
Dziękuje za Twoją odpowiedź.
Niestety nadal nie udało mi się uzyskać zamierzonego efektu.
Kod wygląda następująco:
  1. $qb = $em->createQueryBuilder();
  2. $qb->select('a', $qb->expr()->count('a.date'))
  3. ->from('DarekSlotBundle:Slot', 'a')
  4. ->groupBy('a.date');
  5.  
  6. $test = $qb->getQuery()->getResult();

a zwracany wynik :
  1. array:4 [&#9660;
  2. 0 => array:2 [&#9660;
  3. 0 => Slot {#836 ▶}
  4. 1 => "1"
  5. ]
  6. 1 => array:2 [&#9660;
  7. 0 => Slot {#876 ▶}
  8. 1 => "1"
  9. ]
  10. 2 => array:2 [&#9660;
  11. 0 => Slot {#881 ▶}
  12. 1 => "1"
  13. ]
  14. 3 => array:2 [&#9660;
  15. 0 => Slot {#886 ▶}
  16. 1 => "4"
  17. ]
  18. ]

Docelowo chciałbym w ostatniej tablicy
  1. 3 => array:2 [&#9660;
  2. 0 => Slot {#886 ▶}
  3. 1 => "4"
  4. ]

znajdowały się wszystkie te 4 pasujące rezultaty(slot).
Pytanie czy da się to w ogóle zrobić? Na poziomie sql
damianooo
dane powinno obrabiać się na poziomie modelu w Repository Class ... w doctrin tak jak kolega wcześniej napisał ... natomiast jak się nie da to obrobić to w kodzie ale też na poziomie Modelu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.