Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Doctrine] Złożone zapytanie z niewiadomą ilością OR
Forum PHP.pl > Forum > PHP > Frameworki
evertras
Jak napisać zapytanie, które da następujący efekt:

SELECT * FROM tabela WHERE W1 and (W2 or W3 or W4 or ... or Wn ) and W0

W2 or W3... jest generowane poprzez foreach dlatego nie wiem ile będzie tych warunków. Jak mogę to wszystko razem skleić w jednym zapytaniu ?
arecki
Na szybko wymyślone bo nie pamiętam jak to zrobić z wykorzystaniem mechanizmów doctrine'a
  1. <?php
  2. $subquery = '';
  3. $subqueryParams = array();
  4.  
  5. $conditionsOR = array(
  6. array('t.liczba1', '=', 53),
  7. array('t.liczba2', '>', 100),
  8. array('t.liczba3', '<', 20),
  9. );
  10.  
  11. foreach($conditionsOR as $w)
  12. {
  13. $subquery .= $w[0] . ' ' . $w[1]. ' ? OR ';
  14. $subqueryParams[] = $w[2];
  15. }
  16.  
  17. $subquery = substr($subquery, 0, -3);
  18.  
  19. $results = Doctrine::getTable('Tabela')->createQuery('t')->where('t.dane = ? AND t.user_id = ? AND ('.$subquery.')', array_merge(array('dzisiaj', 2), $subqueryParams))->execute();
  20.  
  21. ?>

phpion
Nie lepiej/prościej wykorzystać IN zamiast łączenia warunków OR?
arecki
Ale ja nie przyjąłem założenia że wszystkie warunki dotyczą tego samego pola smile.gif
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.