Добрый день, есть модель:
public function getAttrbyProductId($product_id, $attribute_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$attribute_id . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");
if ($query->num_rows) {
return $query->row['text'];
} else {
return false;
}
}
В контроллере создаю массив:
$getAttrs = array();
$mileage = $this->model_catalog_product->getAttrbyProductId($result['product_id'], 17);
$fuel = $this->model_catalog_product->getAttrbyProductId($result['product_id'], 21);
$engine = $this->model_catalog_product->getAttrbyProductId($result['product_id'], 23);
$getAttrs = [
'mileage' => $mileage,
'fuel' => $fuel,
'engine' => $engine,
];
Подключаю
$data['products'][] = array(
'attr' => $getAttrs,
);
В итоге в шаблоне категорий вывожу удобно в нужном месте нужный атрибут <?php echo $product['attr']['fuel']; ?>
Цель: создать массив с понятными ключами, для вывода нужных атрибутов в верстке по каждому товару, по итогу сейчас все работает, но смущает что отсылает 1 запрос на 1 атрибут, в массиве может быть и 30 атрибутов, а это 30 запросов на каждый товар, а если на странице 10 товаров, то это прилично + запросов и нагрузка... Подскажите пожалуйста, как можно оптимизировать подобную затею, чтобы укладываться в идеале в 1 запрос, или хотя бы 2-3, если это реально конечно... Заранее спасибо!