Opencart显示最低期权价格

时间:2014-01-07 12:19:44

标签: php mysql opencart

我想要做的是在模型中执行查询,该查询返回具有特定产品ID的所有选项的所有价格,然后在控制器中将其放入数组中,然后在视图中回显最小的价格,我'我不知道我哪里出错了我知道我发布了一个类似的问题,但我认为这更好地解释了它。

模型

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 个答案:

答案 0 :(得分: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()