PHP code example of api-skeletons / doctrine-orm-querybuilder-filter
1. Go to this page and download the library: Download api-skeletons/doctrine-orm-querybuilder-filter library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
api-skeletons / doctrine-orm-querybuilder-filter example snippets
use ApiSkeletons\Doctrine\QueryBuilder\Filter\Applicator;
$applicator = new Applicator($entityManager, Entity\User::class);
$queryBuilder = $applicator($_REQUEST['filter']);
use ApiSkeletons\Doctrine\QueryBuilder\Filter\Applicator;
$applicator = (new Applicator($entityManager, Entity\User::class));
$queryBuilder = $applicator($_REQUEST['filter']);
use ApiSkeletons\Doctrine\QueryBuilder\Filter\Applicator;
$applicator = (new Applicator($entityManager, Entity\User::class))
->enableRelationships()
->removeOperator('like')
->setEntityAlias('user')
->setFieldAliases(['firstName' => 'name'])
->setFilterableFields(['id', 'name'])
;
$queryBuilder = $applicator($_REQUEST['filter']);
$entityAliasMap = $applicator->getEntityAliasMap();
use ApiSkeletons\Doctrine\QueryBuilder\Filter\Applicator;
use Doctrine\ORM\Tools\Pagination\Paginator;
use HAL;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
public function fetchAll(Request $request)
{
$filter = $request->query()['filter'] ?? [];
if (! is_array($filter)) {
$filter = [];
]
$page = (int) $request->query()['page'] ?? 1;
if ($page < 1) {
$page = 1;
}
$applicator = (new Applicator(app('em'), Entity\Style::class))
->enableRelationships(true);
$queryBuilder = $applicator($filter);
$paginator = new Paginator($queryBuilder);
$paginator->getQuery()
->setFirstResult(25 * ($page - 1)) // Page is 0 indexed in query
->setMaxResults(25)
;
$data = (new LengthAwarePaginator(iterator_to_array($paginator->getIterator()), $paginator->count(), 25))
->appends($request->query())
->withPath(route('api.style::fetchAll'))
;
return HAL::paginate('style', $data)->toArray();
}
$applicator = new Applicator($entityManager, Entity\Style::class);
sh
http://localhost/api/user?filter[company][companyType][name|neq]=Consultant