glooby / doctrine-query-builder
Very powerful query builder, perfect for apis
0.1.2
2018-03-20 18:44 UTC
Requires
- php: >=5.6
- doctrine/orm: ^2.5
- symfony/framework-bundle: ^3.2
This package is auto-updated.
Last update: 2024-11-14 03:59:26 UTC
README
Very powerful query builder, perfect to use when building api's or have the need to build very flexible queries
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": { "glooby/doctrine-query-builder": "dev-master" } }
Usage:
use \Glooby\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" } } }