Merge branch '590-fix-slow-ticket-loading' into 'master-fix'

Optimize query for related tickets - split into 3 separate queries #590

See merge request jankstudio/resq!707
This commit is contained in:
Kendrick Chan 2021-06-19 17:34:06 +00:00
commit 39eb6e6dba
2 changed files with 27 additions and 2 deletions

View file

@ -337,6 +337,28 @@ class TicketController extends Controller
$params['redirect_url'] = $cust_update_url;
}
// optimized get related tickets
$rel_tix = [];
// one query for each so we use indeces
if (!empty($obj->getFirstName()) && !empty($obj->getLastName()))
$rel_tix[] = $em->getRepository(Ticket::class)->findBy(['first_name' => $obj->getFirstName(), 'last_name' => $obj->getLastName()]);
if (!empty($obj->getContactNumber()))
$rel_tix[] = $em->getRepository(Ticket::class)->findBy(['contact_num' => $obj->getContactNumber()]);
if (!empty($obj->getPlateNumber()))
$rel_tix[] = $em->getRepository(Ticket::class)->findBy(['plate_number' => $obj->getPlateNumber()]);
$consolidated_rel_tix = [];
foreach ($rel_tix as $rel_tickets)
{
foreach ($rel_tickets as $rticket)
{
$rtid = $rticket->getID();
$consolidated_rel_tix[$rtid] = $rticket;
}
}
$params['related_tickets'] = $consolidated_rel_tix;
/*
// get related tickets
$qb = $em->getRepository(Ticket::class)
->createQueryBuilder('q');
@ -353,6 +375,8 @@ class TicketController extends Controller
$params['related_tickets'] = $query->getQuery()
->getResult();
*/
$params['obj'] = $obj;

View file

@ -13,9 +13,10 @@ use DateTime;
/**
* @ORM\Entity
* @ORM\Table(name="ticket", indexes={
* @ORM\Index(columns={"contact_num"}),
* @ORM\Index(columns={"plate_number"}),
* @ORM\Index(columns={"first_name"}, flags={"fulltext"}),
* @ORM\Index(columns={"last_name"}, flags={"fulltext"})
* @ORM\Index(columns={"first_name"}),
* @ORM\Index(columns={"last_name"})
* })
*/
class Ticket