2014-01-07 3 views
0

Что я хочу сделать, это выполнить запрос в модели, который возвращает всю цену всех параметров с определенным идентификатором продукта, а затем в контроллере помещает это в массив, а затем в представлении эхо наименьшая цена, я не уверен, где я ошибаюсь. Я знаю, что у меня был знакомый вопрос, но я думаю, что это объясняет это лучше.Opencart Отображение минимальной цены опциона

Модель

public function getMin() { 

$queryMin = $this->db->query("SELECT * FROM `oc_product_option_value` WHERE product_id = '" . (int)$product_id . "'"); 
if (isset($queryMin->row['price'])) { 
     return $queryMin->row['price']; 
    } else { 
     return 0; 
    } 

} 

Контроллер

$minimum = $this->model_catalog_product->getMin(); 
       $this->data['minimum'] = array(); 
       foreach ($minimum as $minimums) { 
        $this->data['minimum'][] = array(
        'price' => $minimum['price'] 
        ); 
        } 

Посмотреть

<?php if(isset($this->data['minimum'])){ ?> 
    <?php $min = min($this->data['minimum']); ?> 
    <?php echo $min ?> 
    <?php }else{ ?> 
    <?php echo $price; ?> 
    <?php } ?> 

ответ

1

Проблема заключается в методе модели (в основном запросе).

Метод getMin() должен быть:

$query = $this->db->query(" 
    SELECT MIN(price) min_option_price 
    FROM " . DB_PREFIX . "product_option_value pov 
    LEFT JOIN " . DB_PREFIX . "option o ON o.option_id = pov.option_id 
    LEFT JOIN " . DB_PREFIX . "product_option po ON po.option_id = o.option_id 
    WHERE po.product_id = " . (int)$product_id); 

return (int) $query->row['min_option_price']; 

Тогда в контроллере Вы получаете это следующим образом:

$minimum = $this->model_catalog_product->getMin($this->request->get['product_id']); 
$this->data['minimum'] = $this->currency->format($this->tax->calculate($minimum, $product_info['tax_class_id'], $this->config->get('config_tax'))); 

Теперь Вы можете использовать его в шаблоне непосредственно:

<?php if($minimum) { ?> 
Minimum price is: <?php echo $minimum; ?> 
<?php } else { ?> 
Price is: <?php echo $price; ?> 
<?php } ?> 

Я настоятельно рекомендую переименовать метод модели от getMin(), например. getProductOptionMinPrice().

+0

В настоящее время только что возвращается 1 вместо цены - это просто возвращение, что да есть данные в $ minimum? – user2689642

+0

Нет, он должен вернуть минимальную цену всех опций, прилагаемых к продукту. Проверьте, какое значение находится в переменной '$ minimum', возможно, оно изменяется при форматировании. – shadyyx

Смежные вопросы