Filtry w Doctrine to poniekąd pożyteczna funkcja, na filtrach jest oparte m.in miękkie kasowanie (ang. soft delete), które można podpiąć z paczki gedmo/doctrine-extensions. Filtry przeważnie są włączane na stałe w konfiguracji ORM-a w pliku config.yml
, ale w razie potrzeby można je włączać i wyłączać w kodzie. Obiekt FilterCollection
pobieramy z entity managera, a na nim można wykonać m.in. poniższe metody:
// sprawdzenie czy filtr jest zainstalowany $em->getFilters()->has("soft-deleteable"); // sprawdzenie czy filtr jest włączony $em->getFilters()->isEnabled("soft-deleteable"); // włączenie filtra $em->getFilters()->enable("soft-deleteable"); // wyłączenie filtra $em->getFilters()->disable("soft-deleteable");
Cała ta notka wzięła się stąd, że dłużej niż powinienem szukałem błędu w kodzie, a jego źródłem było właśnie miękkie kasowanie. Zapytanie, które powinno zwracać encję zwracało NULL, a taki przypadek nie był obsłużony w kodzie.