PHPackages                             kiqcavalcanti/laravel-doctrine-filtering - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. kiqcavalcanti/laravel-doctrine-filtering

ActiveLibrary

kiqcavalcanti/laravel-doctrine-filtering
========================================

apply dynamic filters using laravel doctrine

v1.0.0(6y ago)31.9kMITPHPPHP ^7.1.3CI failing

Since Sep 4Pushed 5y ago3 watchersCompare

[ Source](https://github.com/kiqcavalcanti/laravel-doctrine-filtering)[ Packagist](https://packagist.org/packages/kiqcavalcanti/laravel-doctrine-filtering)[ RSS](/packages/kiqcavalcanti-laravel-doctrine-filtering/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (2)Versions (3)Used By (0)

laravel-doctrine-filtering
==========================

[](#laravel-doctrine-filtering)

Apply dynamic query filters using laravel-doctrine

How to use:
===========

[](#how-to-use)

- In your Entity extends FilterEntity
- In your validator you can use the rule isValidFilter to validate the url params filters
- In your repository extends DoctrineFilterRepository and use the method applyFilters passing as parameters the queryBuilder and the url params filters.

example:

```
 $qb =
   $this->_em
     ->createQueryBuilder()
     ->select($this->getEntityName()::getEntityAlias())
     ->from($this->getEntityName(), $this->getEntityName()::getEntityAlias(), $indexBy);

  $this->applyLaravelDoctrineFilters($qb, $filters);

```

Examples
========

[](#examples)

example1:

```
  url = http://localhost/advertisements?filter[created_at]=2018-07-22T18:48:16-03:00
  query =
         SELECT advertisement
         FROM Entities\Advertisement advertisement
         WHERE advertisement.createdAt = '2018-07-22 18:48:16'

```

example2:

```
    url = http://localhost/advertisements?filter[id]=1,2
    query =
            SELECT advertisement
            FROM Entities\Advertisement advertisement
            WHERE advertisement.id IN (1, 2)

```

example3:

```
  url = http://localhost/advertisements?filter[created_at|between]=2018-07-22T18:48:16-03:00,2018-07-22T18:48:16-03:00
  query =
         SELECT advertisement
         FROM Entities\Advertisement advertisement
         WHERE advertisement.createdAt BETWEEN '2018-07-22 18:48:16' AND '2018-07-22 18:48:16'

```

example 4:

```
  url = http://localhost/advertisements?filter[customer_product][customer][name|like]=cor
  query =
         SELECT advertisement
         FROM Entities\Advertisement advertisement
         INNER JOIN Entities\CustomerProduct customer_product
         WITH advertisement.customerProductId = customer_product.id
         INNER JOIN Entities\Customer customer
         WITH customer_product.customerId = customer.id
         WHERE LOWER(customer.name) LIKE '%cor%'

```

Configuration Filter with Joins
===============================

[](#configuration-filter-with-joins)

In your entity add a static attribute $joins with this structure:

```
  protected static $entityJoins [
   'customer_product' => ['entity' => CustomerProduct::class, 'condition' => 'advertisement.customerProductId = customer_product.id'],
   'site' => ['entity' => Site::class, 'condition' => 'advertisement.siteId = site.id']
 ];

```

OperatorEnum / available operators
==================================

[](#operatorenum--available-operators)

```
  case 'eq':
  case '=':
    return OperatorEnum::EQ;

  case 'neq':
  case '!=':
  case '':
    return OperatorEnum::NEQ;

  case 'gt':
  case '>':
    return OperatorEnum::GT;

  case 'gte':
  case '>=':
    return OperatorEnum::GTE;

  case 'lt':
  case '
