Change query for vehicle manufacturers and vehicles to use raw sql. #650

This commit is contained in:
Korina Cordero 2022-03-15 09:01:53 +00:00
parent 1d627025eb
commit 8c685536d3

View file

@ -77,31 +77,48 @@ class VehicleController extends APIController
{ {
$this->denyAccessUnlessGranted('vehicle.list', null, 'No access.'); $this->denyAccessUnlessGranted('vehicle.list', null, 'No access.');
$conn = $em->getConnection();
// get manufacturers // 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 // 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 // process manufacturer results
$mfg_data = []; $mfg_data = [];
foreach($mfgs as $mfg) foreach($mfg_results as $mfg_row)
{ {
$mfg_data[] = [ $mfg_data[] = [
'id' => $mfg->getID(), 'id' => $mfg_row['id'],
'name' => $mfg->getName(), 'name' => $mfg_row['name'],
]; ];
} }
// process vehicle results // process vehicle results
$make_data = []; $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[] = [ $make_data[] = [
'id' => $vehicle->getID(), 'id' => $vrow['id'],
'mfg_id' => $vehicle->getManufacturer()->getID(), 'mfg_id' => $vrow['manufacturer_id'],
'make' => $vehicle->getMake(), 'make' => $vrow['make'],
'model' => $vehicle->getModelYearFormatted(), 'model' => $model_year,
]; ];
} }