Skip to content

Symfony: Paginacja przy własnych/nietypowych warunkach SQL

by zergu on Styczeń 5th, 2009 Blip Facebook Flaker Twitter Wykop

Pobieranie obiektów bez wykorzystywania obiektu klasy Criteria jest dość proste. Jednak standardowy paginator w Symfony ma taką właściwość, że jako parametr przyjmuje obiekt tejże klasy. Stwarza to trochę problemów, gdy odpytujemy bazę w niezbyt typowy sposób, a chcemy podzielić wyniki na strony. Przykład: w wyszukiwarce sprawdzamy czy połączone kolumny pasują do podanej frazy.

Prawdę mówiąc nie wiem jak to zrobić w Propelu 1.2 (tym samym Symfony < 1.2), jednak w wersji 1.3 jest już na to sposób dzięki Criteria::CUSTOM. Przykładowo:

$c = new Criteria();
$c->add (CarPeer::BRAND,
         CarPeer::BRAND."||' '||".CarPeer::MODEL.' ILIKE \'%'.$phrase.'%\'',
         Criteria::CUSTOM);$pager->setCriteria ($c);
</code>

Rzeczą, na którą koniecznie trzeba zwrócić uwagę, jest podanie dowolnej kolumny (pierwszy parametr), mimo że nie będzie ona wykorzystywana. Jako drugi parametr podajemy już dokładnie to, co ciężko było normalnie zbudować wykorzystując propelowe kryteria (może to być fragment czystego SQL występującego po klauzuli WHERE). Ostatni parametr jest narzucony i służy do aktywowania całej „magii”.

Podobne wpisy:

  1. Formularze Symfony: select ograniczony przez wartość innego pola
  2. Symfony+Propel: domyślne sortowanie
  3. Migracja MySQL → PostgreSQL aplikacji w Symfony 1.1

Autorzy zdjęć: Horia Varlan

From → Symfony

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS

Notify me of followup comments via e-mail. You can also subscribe without commenting.