Optimize incoming jo customer vehicle search #89

This commit is contained in:
Kendrick Chan 2018-04-10 23:37:34 +08:00
parent 836c026402
commit 42f3048d12

View file

@ -509,6 +509,7 @@ class CustomerController extends BaseController
->getRepository(CustomerVehicle::class) ->getRepository(CustomerVehicle::class)
->createQueryBuilder('q'); ->createQueryBuilder('q');
/*
// build expression now since we're reusing it // build expression now since we're reusing it
$vehicle_label = $qb->expr()->concat( $vehicle_label = $qb->expr()->concat(
'q.plate_number', 'q.plate_number',
@ -520,15 +521,23 @@ class CustomerController extends BaseController
'c.phone_mobile', 'c.phone_mobile',
$qb->expr()->literal(')') $qb->expr()->literal(')')
); );
*/
// count total records // count total records
$tquery = $qb->select('COUNT(q)') $tquery = $qb->select('COUNT(q)');
->join('q.customer', 'c');
// add filters to count query // add filters to count query
if (!empty($term)) { if (!empty($term)) {
$tquery->where('q.plate_number like :search')
->setParameter('search', $term . '%');
/*
$tquery->where('match_against (q.plate_number, :search \'in boolean mode\') > 0.1')
->setParameter('search', $term . '*');
*/
/*
$tquery->where('q.plate_number LIKE :filter') $tquery->where('q.plate_number LIKE :filter')
->setParameter('filter', '%' . $term . '%'); ->setParameter('filter', '%' . $term . '%');
*/
} }
$total = $tquery->getQuery() $total = $tquery->getQuery()
@ -542,15 +551,25 @@ class CustomerController extends BaseController
$has_more_pages = $page < $pages ? true : false; $has_more_pages = $page < $pages ? true : false;
// build main query // build main query
$query = $qb->select('q') $query = $qb->select('q');
/*
->addSelect($vehicle_label . ' as vehicle_label') ->addSelect($vehicle_label . ' as vehicle_label')
->addSelect('c.first_name as cust_first_name') ->addSelect('c.first_name as cust_first_name')
->addSelect('c.last_name as cust_last_name'); ->addSelect('c.last_name as cust_last_name');
*/
// add filters if needed // add filters if needed
if (!empty($term)) { if (!empty($term)) {
$query->where('q.plate_number like :search')
->setParameter('search', $term . '%');
/*
$query->where('match_against (q.plate_number, :search \'in boolean mode\') > 0.1')
->setParameter('search', $term . '*');
*/
/*
$query->where('q.plate_number LIKE :filter') $query->where('q.plate_number LIKE :filter')
->setParameter('filter', '%' . $term . '%'); ->setParameter('filter', '%' . $term . '%');
*/
} }
@ -566,10 +585,11 @@ class CustomerController extends BaseController
// build vehicles array // build vehicles array
$vehicles = []; $vehicles = [];
foreach ($obj_rows as $vehicle) { foreach ($obj_rows as $cv) {
$cust = $cv->getCustomer();
$vehicles[] = [ $vehicles[] = [
'id' => $vehicle[0]->getID(), 'id' => $cv->getID(),
'text' => $vehicle['vehicle_label'] 'text' => $cv->getPlateNumber() . ' ' . $cust->getFirstName() . ' ' . $cust->getLastName() . ' (+63' . $cust->getPhoneMobile() . ')',
]; ];
} }