Apply where filters to pagination query

This commit is contained in:
Ramon Gutierrez 2018-01-14 15:32:18 +08:00
parent a83e3dee5b
commit 0c3da71a57
9 changed files with 188 additions and 105 deletions

View file

@ -47,14 +47,21 @@ class BatteryController extends BaseController
->getRepository(Battery::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)')
->join('q.manufacturer', 'mfg')
->join('q.model', 'model')
->join('q.size', 'size');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -77,19 +84,8 @@ class BatteryController extends BaseController
->addSelect('model.name as model_name')
->addSelect('size.name as size_name');
// add associations
$query->join('q.manufacturer', 'mfg')
->join('q.model', 'model')
->join('q.size', 'size');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('mfg.name LIKE :filter')
->orWhere('model.name LIKE :filter')
->orWhere('size.name LIKE :filter')
->orWhere('q.prod_code LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -398,4 +394,15 @@ class BatteryController extends BaseController
$response->setStatusCode(Response::HTTP_OK);
$response->send();
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('mfg.name LIKE :filter')
->orWhere('model.name LIKE :filter')
->orWhere('size.name LIKE :filter')
->orWhere('q.prod_code LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -42,14 +42,18 @@ class BatteryManufacturerController extends BaseController
->getRepository(BatteryManufacturer::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -69,6 +73,9 @@ class BatteryManufacturerController extends BaseController
// build query
$query = $qb->select('q');
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
@ -256,4 +263,12 @@ class BatteryManufacturerController extends BaseController
$response->setStatusCode(Response::HTTP_OK);
$response->send();
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -42,14 +42,18 @@ class BatteryModelController extends BaseController
->getRepository(BatteryModel::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -69,11 +73,8 @@ class BatteryModelController extends BaseController
// build query
$query = $qb->select('q');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -256,4 +257,12 @@ class BatteryModelController extends BaseController
$response->setStatusCode(Response::HTTP_OK);
$response->send();
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -42,14 +42,18 @@ class BatterySizeController extends BaseController
->getRepository(BatterySize::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -69,11 +73,8 @@ class BatterySizeController extends BaseController
// build query
$query = $qb->select('q');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -256,4 +257,12 @@ class BatterySizeController extends BaseController
$response->setStatusCode(Response::HTTP_OK);
$response->send();
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -45,14 +45,18 @@ class CustomerController extends BaseController
->getRepository(Customer::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -72,12 +76,8 @@ class CustomerController extends BaseController
// build query
$query = $qb->select('q');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.first_name LIKE :filter')
->orWhere('q.last_name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -266,4 +266,13 @@ class CustomerController extends BaseController
$response->setStatusCode(Response::HTTP_OK);
$response->send();
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.first_name LIKE :filter')
->orWhere('q.last_name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -42,14 +42,18 @@ class RoleController extends BaseController
->getRepository(Role::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -69,12 +73,8 @@ class RoleController extends BaseController
// build query
$query = $qb->select('q');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.id LIKE :filter')
->orWhere('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -305,4 +305,13 @@ class RoleController extends BaseController
$response->setStatusCode(Response::HTTP_OK);
$response->send();
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.id LIKE :filter')
->orWhere('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -32,14 +32,18 @@ class UserController extends BaseController
->getRepository(User::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -59,15 +63,8 @@ class UserController extends BaseController
// build query
$query = $qb->select('q');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.username LIKE :filter')
->orWhere('q.first_name LIKE :filter')
->orWhere('q.last_name LIKE :filter')
->orWhere('q.email LIKE :filter')
->orWhere('q.contact_num LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -351,4 +348,16 @@ class UserController extends BaseController
$response->setStatusCode(Response::HTTP_OK);
$response->send();
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.username LIKE :filter')
->orWhere('q.first_name LIKE :filter')
->orWhere('q.last_name LIKE :filter')
->orWhere('q.email LIKE :filter')
->orWhere('q.contact_num LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -32,14 +32,19 @@ class VehicleController extends BaseController
->getRepository(Vehicle::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)')
->join('q.manufacturer', 'mfg');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -60,17 +65,8 @@ class VehicleController extends BaseController
$query = $qb->select('q')
->addSelect('mfg.name as mfg_name');
// add associations
$query->join('q.manufacturer', 'mfg');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('mfg.name LIKE :filter')
->orWhere('q.make LIKE :filter')
->orWhere('q.model_year_from LIKE :filter')
->orWhere('q.model_year_to LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -299,4 +295,15 @@ class VehicleController extends BaseController
$start_year = 1950;
return range($start_year, date("Y"));
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('mfg.name LIKE :filter')
->orWhere('q.make LIKE :filter')
->orWhere('q.model_year_from LIKE :filter')
->orWhere('q.model_year_to LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}

View file

@ -42,14 +42,18 @@ class VehicleManufacturerController extends BaseController
->getRepository(VehicleManufacturer::class)
->createQueryBuilder('q');
// count total records
$total = $qb->select('COUNT(q)')
->getQuery()
->getSingleScalarResult();
// get datatable params
$datatable = $req->request->get('datatable');
// count total records
$tquery = $qb->select('COUNT(q)');
// add filters to count query
$this->setQueryFilters($datatable, $tquery);
$total = $tquery->getQuery()
->getSingleScalarResult();
// get current page number
$page = $datatable['pagination']['page'] ?? 1;
@ -69,11 +73,8 @@ class VehicleManufacturerController extends BaseController
// build query
$query = $qb->select('q');
// check if filter is present
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
// add filters to query
$this->setQueryFilters($datatable, $query);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
@ -289,4 +290,12 @@ class VehicleManufacturerController extends BaseController
'data' => $vehicles
]);
}
// check if datatable filter is present and append to query
protected function setQueryFilters($datatable, &$query) {
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.name LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
}