PHPackages                             stoullec/query-filter - 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. [Search &amp; Filtering](/categories/search)
4. /
5. stoullec/query-filter

ActiveLibrary[Search &amp; Filtering](/categories/search)

stoullec/query-filter
=====================

Convert url filter to dql to permit users to filter data with only one endpoint.

04PHP

Since Jun 11Pushed 2y ago1 watchersCompare

[ Source](https://github.com/stoullec/query-filter)[ Packagist](https://packagist.org/packages/stoullec/query-filter)[ RSS](/packages/stoullec-query-filter/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Vocabulaire DQL:
----------------

[](#vocabulaire-dql)

LibelléExemple d'implementationTableApp\\Entity\\DirectorClauseWHEREFilter operator&gt;Logic operatorANDDQL propertyfirst\_nameDQL classDirectorDQL tableApp\\Entity\\DirectorColumndirector.salaryDQLQuerySELECT director FROM APP\\Entity\\Director WHERE director.salary &gt; 1500 AND director.first\_name = 'Simon';Vocabulaire Filter:
-------------------

[](#vocabulaire-filter)

LibelléExemple d'implementationFilter classdirector-typeFilter propertylastNameLogic operator\[and\]Filter operatorgreater than = \[gt\]Logic operator\[and\]URL/director/filter?id=1url\_filter/director/filter?id=1FilterfirstName\[eq\]=SimonFilter
------

[](#filter)

Le `url_filter` doit respecter certains formats:

- L'entity(`FilterClass`) sur laquelle vous filtrez doit être en format 'my-entity' Exemple: Entity = Director =&gt; URL = /director/filter?id=1 Entity = DirectorType =&gt; URL = /director-type/filter?id=1
- La property sur laquelle vous filtrez doit être en format camelCase 'myProperty' Exemple: Property = name =&gt; URL = /director/filter?name=Simon Property = firstName =&gt; URL = /director-type/filter?firstName=Simon
- Le `filter_operator` doit être en format '\[filteroperator\]=' Exemple: Operator = equal =&gt; URL = /director/filter?firstName\[eq\]=Simon Operator = not equal =&gt; URL = /director-type/filter?firstName\[not:eq\]=Simon
- Le `logic_operator` doit être en format '\[logicoperator\]=' Exemple: Operator = and =&gt; URL = /director/filter?firstName\[eq\]=Simon\[and\]=lastName\[eq\]=MAHE

Liste des `filter_operator`
---------------------------

[](#liste-des-filter_operator)

LibelléUtilisationExemple SQLBetween\[btw\]=BETWEEN 1 AND 2Contain\[ctn\]=LIKE "%value%"End with\[ew\]=LIKE "%value"Equal\[eq\]== "value"Greater equal than\[gte\]=&gt;= "value"Greater than\[gt\]=&gt; "value"Smaller equal than\[ste\]=&gt;= "value"Smaller than\[st\]=&gt; "value"Start with\[sw\]=LIKE "value%"Sort\[sort\]=ORDER BY propertyNot Between\[not:btw\]=NOT(BETWEEN 1 AND 2)Not Contain\[not:ctn\]=NOT(LIKE "%value%")Not End with\[not:ew\]=NOT(LIKE "%value")Not Equal\[not:eq\]=NOT(= "value")Not Greater equal than\[not:gte\]=NOT(&gt;= "value")Not Greater than\[not:gt\]=NOT(&gt; "value")Not Smaller equal than\[not:ste\]=NOT(&gt;= "value")Not Smaller than\[not:st\]=NOT(&gt; "value")Not Start with\[not:sw\]=NOT(LIKE "value%")Liste des `logic_operator`
--------------------------

[](#liste-des-logic_operator)

LibelléUtilisationExemple SQLAnd\[and\]=AND entity.property = "value"Or\[or\]=OR entity.property = "value"Not And\[not:and\]=AND NOT(entity.property = "value")Not Or\[not:or\]=OR NOT(entity.property = "value")Zone du développeur
-------------------

[](#zone-du-développeur)

DQLClauseSelect =&gt; get() =&gt; SELECT director
DQLClauseFrom =&gt; get() =&gt; FROM App\\Entity\\Director
DQLClauseInnerJoin =&gt; get() =&gt; null| INNER JOIN person\_type ON person\_type.id = director.person\_type\_id
DQLClauseWhere =&gt; getListOfFilterFromUrl()

Les fichiers sont séparés en deux parties: par Filter et par DQL.

La partie Filter représente les informations côté Symfony tel que 'SELECT', clauses WHERE etc...Dès qu'on aura besoin d'une information lié à DQL pour la réalisation de la requête DQL, alors on lancera des appels dans le dossier Filter.

La partie DQL représente les informations côté Symfony tel que 'App\\Entity...', nom des property etc...Dès qu'on aura besoin d'une information lié à Symfony pour la réalisation de la requête DQL, alors on lancera des appels dans le dossier Filter.

A faire
-------

[](#a-faire)

// TODO réaliser la documentation en anglais

// TODO faire le sort

###  Health Score

14

—

LowBetter than 2% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity22

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/bae5755aaa8926e10c1e00d8e107871af673e432a5ebe4c7064570b8826a5716?d=identicon)[stoullec](/maintainers/stoullec)

---

Top Contributors

[![stoullec](https://avatars.githubusercontent.com/u/106675602?v=4)](https://github.com/stoullec "stoullec (11 commits)")

### Embed Badge

![Health badge](/badges/stoullec-query-filter/health.svg)

```
[![Health](https://phpackages.com/badges/stoullec-query-filter/health.svg)](https://phpackages.com/packages/stoullec-query-filter)
```

###  Alternatives

[ruflin/elastica

Elasticsearch Client

2.3k50.4M203](/packages/ruflin-elastica)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15024.3M65](/packages/opensearch-project-opensearch-php)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[massive/search-bundle

Massive Search Bundle

721.4M13](/packages/massive-search-bundle)[shyim/opensearch-php-dsl

OpenSearch/Elasticsearch DSL library

175.9M9](/packages/shyim-opensearch-php-dsl)[outl1ne/nova-multiselect-filter

Multiselect filter for Laravel Nova.

45802.7k3](/packages/outl1ne-nova-multiselect-filter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
