Filter.php 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. /*
  3. * This file is part of the Sonata package.
  4. *
  5. * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Sonata\DoctrineORMAdminBundle\Filter;
  11. use Sonata\AdminBundle\Filter\Filter as BaseFilter;
  12. abstract class Filter extends BaseFilter
  13. {
  14. public function apply($queryBuilder, $value)
  15. {
  16. $this->value = $value;
  17. list($alias, $field) = $this->association($queryBuilder, $value);
  18. $this->filter($queryBuilder, $alias, $field, $value);
  19. }
  20. protected function association($queryBuilder, $value)
  21. {
  22. return array($queryBuilder->getRootAlias(), $this->getFieldName());
  23. }
  24. protected function applyWhere($queryBuilder, $parameter)
  25. {
  26. if ($this->getCondition() == self::CONDITION_OR) {
  27. $queryBuilder->orWhere($parameter);
  28. } else {
  29. $queryBuilder->andWhere($parameter);
  30. }
  31. }
  32. }