Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Doctrine2] Query builder i select count
swiezak
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.08.2011

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


Mam zapytanie SQL, ktore oblicza liczbe produktow w danej kategorii. Jest to relacja typu n:m, wiec wyglada ono nastepujaco:

  1. SELECT COUNT(p.id) AS productsCount
  2. FROM products p
  3. JOIN products_categories AS pc ON pc.categories_id = p.id
  4. JOIN categories c ON pc.categories_id = c.id
  5. WHERE c.id = '.$id.'
  6. ORDER BY p.id


Mam problem, aby to zapytanie zapisac w formacie Query builder. Chyba zmeczenie daje o sobie znac.

Probuje w ten sposob:
  1. class ProductsRepository extends \Doctrine\ORM\EntityRepository
  2. {
  3. public function counterProductsFromCategory($id) {
  4. $qb = $em->getRepository('MlFrontendBundle:Products')->createQueryBuilder('p')->select('COUNT(p)')
  5. ->Join('p.productsCategories', 'pc')
  6. ->addSelect('pc');
  7. ->Join('p.categories', 'c')
  8. ->addSelect('c');
  9. $gb
  10. ->andWhere('pc.categoriesId = :categoriesId')->setParameter('c', $id)
  11.  
  12. ... // nie wiem co dalej dopisac
  13.  
  14. return $qb->getQuery()->getSingleScalarResult();
  15. }
  16. }


Bede wdzieczny za wskazowki, ktore pomoga okielznac tego "kulfona".
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


1. W zapytanie masz niepootrzebne ORDER BY
2. W kodzie masz ->select ('Count(p)'). Moim zdaniem powinno być ->select ('Count(p.*)')
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 Aktualny czas: 22.08.2025 - 11:35