From 8c685536d33a59424133bbbdaf330bab835fd941 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 15 Mar 2022 09:01:53 +0000 Subject: [PATCH] Change query for vehicle manufacturers and vehicles to use raw sql. #650 --- src/Controller/CAPI/VehicleController.php | 37 +++++++++++++++++------ 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/Controller/CAPI/VehicleController.php b/src/Controller/CAPI/VehicleController.php index 02de2d8e..1f3b13b4 100644 --- a/src/Controller/CAPI/VehicleController.php +++ b/src/Controller/CAPI/VehicleController.php @@ -77,31 +77,48 @@ class VehicleController extends APIController { $this->denyAccessUnlessGranted('vehicle.list', null, 'No access.'); + $conn = $em->getConnection(); // get manufacturers - $mfgs = $em->getRepository(VehicleManufacturer::class)->findBy([], ['name' => 'ASC']); + $mfg_sql = 'SELECT vmfg.id, vmfg.name FROM vehicle_manufacturer vmfg ORDER BY vmfg.name ASC'; + + // get manufacturer results + $mfg_stmt = $conn->prepare($mfg_sql); + $mfg_stmt->execute(); + + $mfg_results = $mfg_stmt->fetchAll(); // get vehicles - $vehicles = $em->getRepository(Vehicle::class)->findBy([], ['manufacturer' => 'ASC', 'make' => 'ASC']); + $vehicle_sql = 'SELECT v.id, v.manufacturer_id, v.make, v.model_year_from, v.model_year_to + FROM vehicle v ORDER BY v.manufacturer_id ASC, v.make ASC'; + + // get vehicle results + $vehicle_stmt = $conn->prepare($vehicle_sql); + $vehicle_stmt->execute(); + + $vehicle_results = $vehicle_stmt->fetchAll(); // process manufacturer results $mfg_data = []; - foreach($mfgs as $mfg) + foreach($mfg_results as $mfg_row) { $mfg_data[] = [ - 'id' => $mfg->getID(), - 'name' => $mfg->getName(), + 'id' => $mfg_row['id'], + 'name' => $mfg_row['name'], ]; } // process vehicle results $make_data = []; - foreach($vehicles as $vehicle) + foreach($vehicle_results as $vrow) { + // format the model year from and model year to + $model_year = $vrow['model_year_from' ] . ' - ' . $vrow['model_year_to']; + $make_data[] = [ - 'id' => $vehicle->getID(), - 'mfg_id' => $vehicle->getManufacturer()->getID(), - 'make' => $vehicle->getMake(), - 'model' => $vehicle->getModelYearFormatted(), + 'id' => $vrow['id'], + 'mfg_id' => $vrow['manufacturer_id'], + 'make' => $vrow['make'], + 'model' => $model_year, ]; }