opencart - Получить товары по ценовому диапазону

Ответ на этот вопрос искал в Google с сайта stackoverflow. Но ответа на мою ситуацию не нашел.

Мне нужно извлечь информацию о товаре по ценовому диапазону из базы данных на OpenCart CMS. К этому я добавил метод model/catalog/product.php в конец файла:

public function getProductByPrice($low, $heigh){
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE price >= " . $low . " AND price < " . $heigh );

        foreach ($query->rows as $result) {
            $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
        }
        return $product_data;
    }

Там извлекают информацию только из одной таблицы. Название продукта находится на другом столе. И как мне извлечь данные непосредственно из двух таблиц и объединить два результата в один массив?

Версия OpenCart: 2.1.0.2 (rs.1)


person Saahon    schedule 11.02.2016    source источник


Ответы (1)


Чтобы извлечь данные из двух таблиц, используйте JOINS, а чтобы получить продукты с данными и именами, ограниченными ценой, вы можете использовать этот запрос:

$query = $this->db->query("SELECT p.*, pd.name FROM " . DB_PREFIX .
         "product p LEFT JOIN " . DB_PREFIX ."product_description pd
          ON p.product_id = pd.product_id WHERE p.price >= " . (int)$low . 
         " AND p.price < " . (int)$high .");

Однако,

$this->getProduct($result['product_id']);

также даст вам название продукта на основе идентификатора продукта.

P.S. Вы написали с ошибкой $high

person linktoahref    schedule 11.02.2016