Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2][SF]Wyciąganie z bazy danych za pomocą specjalnych kryteriów ,problem
Forum PHP.pl > Forum > PHP > Frameworki
szypi1989
Witam. Otóż Chciałem wyciągnąć z bazy danych z projektu sklepu samochodowego ( taki wymyślony dla testu) w symfony 2.8 , wszystkie samochody które mają cenę powyżej 3000 i mniej niż 8000 ale jakoś mi to nie wychodzi poprzez funkcję findBy:

  1. $entities = $em->getRepository('SzypiBundle:Cars')->findBy(array("price" => ">3000"));


Oto chodzi , żę znak ">" nic nie rusza moich wyników . Chciałbym także aby wyciągnać z bazy danych także poniżej wartośći kolumny price.
Czyli coś takiego price > 3000 i price < 3000.
Jak nie można zrobić to za pomocą findBy to jak najlepiej to zrobić i najwygodniej?
ohm
Wrzuc sobie do Repository normalną metodę z przedrostkiem find typu findByPrice($from, $to) i użyj stwórz tam zapytanie querybuilderem z podanymi parametrami.
szypi1989
Rozumiem. Ale ja potrzebuje tam więcej ograniczeń niż tylko kolumna (price). Muszę założyć ogarniczenia na parę kolumn. Po prostu tak to tylko podałem.
ohm
No to robisz jakies findByParameters($parameters) i ogarniasz co tam trzeba.
Pilsener
Dobrze jest używać ORMa w takiej kolejności:

1. Obiekt encji (np. $articles = $user->getArticles())
2. Repozytorium + standardowe findBy
3. Repozytorium + matching:
  1. $c = new \Doctrine\Common\Collections\Criteria();
  2. $c->where($c->expr()->gt('costam', 999));
  3.  
  4. $data = $repo->matching($c);

4. Query builder
5. DQL
6. Native query

Jest to istotne, gdyż przy 1-3 mamy pełne wsparcie ORM.
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.