Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Doctrine 2] Wyświetlanie ilości pasujących wyników
kilaz91
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 3.04.2014

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


Witam,
mam dość zaawansowaną wyszukiwarkę w której potrzebuję wyświetlić dodatkowo ilość pasujących wyników.

np checkboxy
"
funkcje:
[] wifi (12)
[] bluetooth (16)
[] android (5)
"

coś na zasadzie jak na allegro w wyszukiwaniach.

Czy ktoś mi może pomóc w znalezieniu rozwiązania albo napisać pod jaką nazwą tego szukać? Taka opcja jest coraz częściej używana więc chyba powinno to mieć swoją terminologie albo nazwę funkcji.
Oczywiście jeżeli doctrine 2 zawiera taką funkcję to byłbym wdzięczy za jej wskazanie (IMG:style_emoticons/default/smile.gif) szukam i nie mogę znaleźć

Dzięki i pozdrawiam,
Konrad
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kilaz91
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 3.04.2014

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


Ok, mam coś takiego:
  1. [obiekt_jakis_1]
  2. (
  3. [featureForm] => Array
  4. (
  5. [0] => Array
  6. (
  7. [id] => 38
  8. [count] => 1
  9. [formId] => 133
  10. )
  11. [1] => Array
  12. (
  13. [id] => 49
  14. [count] => 0
  15. [formId] => 135
  16. )
  17. )
  18. )
  19.  
  20. [obiekt_jakis_2]
  21. (
  22. [featureForm] => Array
  23. (
  24. [0] => Array
  25. (
  26. [id] => 48
  27. [count] => 1
  28. [formId] => 133
  29. )
  30. [1] => Array
  31. (
  32. [id] => 52
  33. [count] => 1
  34. [formId] => 135
  35. )
  36. )
  37. )

count - jeżeli 1, zawiera cechę o id "formId"

teraz mam zapytanie do bazy (trochę warunków WHERE)

$qb -> from('Application\Entity\Phone', 'p');
$qb -> join('p.link','l');
$qb -> where('p.active = 1');
$qb -> leftJoin('p.prices','price');
$qb -> andWhere('price.value > :minPrice');
$qb -> andWhere('price.value < :maxPrice');
$qb -> setParameter('minPrice',$minPrice);
$qb -> setParameter('maxPrice',$maxPrice);

Po czym do zapytania dołączam:
foreach($form as $id =>$value)
$qb -> leftJoin('p.featureForm','formId_'.$id,'WITH','formId_'.$id.'.count = 1 AND 'formId_'.$id.'.answerId = '.$id);


Lecz problem w tym że gdy w select odwołam się do "count(formId_$id) as ct_form_$id ",
otrzymuję wynik nieuwzględniający np cen.
Co prawda mógłbym dodać warunki where do left join ale to byłoby masakrycznie niewydajne.

Jak można odwołać się do zewnętrznej tabeli tak żeby zliczyła tylko te wartości które są zwracane w tym zapytaniu a nie jak to ma teraz miejsce że odwołuje się do wszystkich elementów (nawet nieaktywnych i niemieszczących się z zakresie cen)?

Pozdrawiam,
Konrad

Ten post edytował kilaz91 20.03.2015, 13:04:15
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 23:40