Shop
{
"id": 492440,
"state": "active",
"verticalId": 2,
"company": null,
"address": null,
"phoneCostsinfo": null,
"email": "shop492440@localhost",
"commissionRateDefault": null,
"commissionRates": [],
"basicCharge": false,
"paymentCommissionFee": 4.5,
"bankData": null,
"createdAt": "2017-12-10 21:00:12"
}
Request example [accepted]
GET /shops?filter[state][neq]=active&filter[verticalId][eq]=2&filter[paymentCommissionFee][gt]=3
Client
<?php
// http://docs.guzzlephp.org/en/stable/quickstart.html#query-string-parameters
$guzzleClient = new \GuzzleHttp\Client();
$guzzleResponse = $guzzleClient->request('GET', 'http://localhost/shops', [
'query' => [
'filter' => [
'state' => [
'neq' => 'active',
],
'verticalId' => [
'eq' => 2,
],
'paymentCommissionFee' => [
'gt' => 3,
],
],
],
]);
// http://php.net/manual/en/function.http-build-query.php
$queryString = http_build_query([
'filter' => [
'state' => [
'neq' => 'active',
],
'verticalId' => [
'eq' => 2,
],
'paymentCommissionFee' => [
'gt' => 3,
],
],
]);
$url = 'http://localhost/shops?' . $queryString;
Server
<?php
/** @var \Doctrine\ORM\EntityManager $entityManager */
$entityManager = $this->getDoctrine()->getManager();
/** @var \Doctrine\ORM\QueryBuilder $queryBuilder */
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder->select('s')->from('Shop', 's');
$filterData = $request->query->get('filter', []);
/** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */
$eventDispatcher->dispatch('queryBuilderCreated', new Event($queryBuilder, $filterData, Shop::class));
$result = $queryBuilder->getQuery()->getArrayResult();
The Expr class
<?php
// http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html#the-expr-class
class Expr
{
// Example - $queryBuilder->expr()->eq('u.id', '?1') => u.id = ?1
public function eq($x, $y);
// Example - $queryBuilder->expr()->neq('u.id', '?1') => u.id <> ?1
public function neq($x, $y);
// Example - $queryBuilder->expr()->lt('u.id', '?1') => u.id < ?1
public function lt($x, $y);
// Example - $queryBuilder->expr()->lte('u.id', '?1') => u.id <= ?1
public function lte($x, $y);
// Example - $queryBuilder->expr()->gt('u.id', '?1') => u.id > ?1
public function gt($x, $y);
// Example - $queryBuilder->expr()->gte('u.id', '?1') => u.id >= ?1
public function gte($x, $y);
// Example - $queryBuilder->expr()->isNull('u.id') => u.id IS NULL
public function isNull($x);
// Example - $queryBuilder->expr()->isNotNull('u.id') => u.id IS NOT NULL
public function isNotNull($x);
// Example - $queryBuilder->expr()->in('u.id', array(1, 2, 3))
public function in($x, $y);
// Example - $queryBuilder->expr()->notIn('u.id', '2')
public function notIn($x, $y);
// Example - $queryBuilder->expr()->like('u.firstname', $qb->expr()->literal('Gui%'))
public function like($x, $y);
// Example - $queryBuilder->expr()->notLike('u.firstname', $qb->expr()->literal('Gui%'))
public function notLike($x, $y);
// Example - $queryBuilder->expr()->between('u.id', '1', '10')
public function between($val, $x, $y);
}