I am struggling to make this SQL query to a Laravel PDO query. Does anyone know how I can do this? (Especially the 'AS'
statements and the naming in the joins).
Query:
SELECT models.name as model_name, models.brand as model_brand, t.name as trim_name, t.extra_information as trim_extra_information, t.price as trim_price, t.popular as trim_is_popular, s.type as specification_type, s.value as specification_value, o.name as option_name, o.default as option_default, o.remaining as option_remaining, c.name as color_name, c.hex_code as color_hex_code, c.price_extra as color_price_extra, ll.months as lease_length_months, ll.default as lease_length_default, ll.price_extra as lease_length_price_extra, eo.name as extra_option_name, eo.description as extra_option_description, eo.price_total as extra_option_price_total, eo.price_extra as extra_option_price_extra, m.kilometers as mileage_kilometers, m.default as mileage_default, m.price_extra as mileage_price_extra, m.price_extra_km as mileage_price_extra_km FROM `models` INNER JOIN trims t on models.id = t.model_id INNER JOIN specifications s on t.id = s.trim_id INNER JOIN options o on t.id = o.trim_id INNER JOIN colors c on t.id = c.trim_id INNER JOIN lease_lengths ll on t.id = ll.trim_id INNER JOIN extra_options eo on ll.id = eo.lease_length_id INNER JOIN mileages m on ll.id = m.lease_length_id
Advertisement
Answer
Directly use join()
and select()
method like this:
Model::join('trims t', 'models.id', '=', 't.model_id') ->join('specifications s', 't.id', '=', 's.trim_id') ... ->select( 'models.name as model_name', 'models.brand as model_brand', 't.name as trim_name', 't.extra_information as trim_extra_information', 't.price as trim_price', 't.popular as trim_is_popular', ... ) ->get()