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