warrantgroup / doctrine-query-builder
An elegant lightweight library to dynamically build doctrine queries from structured data. Perfect for an API to interpret how data should be represented without any additional mapping.
Package info
github.com/warrantgroup/doctrine-query-builder
pkg:composer/warrantgroup/doctrine-query-builder
Requires
- php: >=5.6
- doctrine/orm: ^2.5
- symfony/framework-bundle: ^3.2
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-09-04 11:49:44 UTC
README
An elegant lightweight library to dynamically build doctrine queries from structured data. Perfect for an API to interpret how data should be represented without any additional mapping.
Supports unlimited nested AND/OR groups, most of the common SQL operators, joins, order by, distinct etc
Requirements:
- PHP >= 5.6
- Symfony HTTP Foundation > 3.2
- Doctrine ORM > 2.5
Installation:
With Composer:
{
"require": {
"warrantgroup/doctrine-query-builder": "dev-master"
}
}
Usage:
use \Warrant\Doctrine\QueryBuilder\QueryBuilder; $repo = $this->getDoctrine()->getManager()->getRepository('AcmeMainBundle:Person'); $qb = new QueryBuilder(); $results = $qb->build($repo, $data)->getQuery()->getResult(); return new JsonResponse($results);
Example data:
{
"alias": "p",
"select": ["p.id"],
"where": {
"$or": {
"p.city": {
"$same": "c.city"
},
"p.zipCode": {
"$same": "c.zipCode"
},
"p.street": {
"$same": "c.street"
},
},
"c.city": {
"$in": [
"New York",
"London"
]
},
"c.employees": { "$equals": 1 },
"l.code": 49,
"p.country": "$not_null",
"p.phone": "$is_null",
"c.assets": { "$gte": 1000 },
"c.turnover": { "$lt": 10000 },
"t.code": {
"$in": [1, 2, 3]
},
"r.title": {
"$not_in": ":titles"
}
},
"distinct": true,
"params": {
"titles": ["CFO", "CMO"]
},
"orderBy": {
"p.name": "asc"
},
"join": {
"p.roles": "r",
"r.company": "c",
"c.trades": {
"alias": "t",
"type": "left"
}
}
}