Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][SF2][Symfony2]Grupowanie wyników w widoku
ShaggyAG
post 20.01.2016, 11:11:03
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 11
Dołączył: 12.10.2014
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
CuteOne
post 20.01.2016, 12:16:38
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  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());
Go to the top of the page
+Quote Post
ShaggyAG
post 21.01.2016, 03:41:57
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 11
Dołączył: 12.10.2014
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
damianooo
post 26.01.2016, 11:52:49
Post #4





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 22:54