我想要做的是在模型中执行查询,该查询返回具有特定产品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 } ?>
答案 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()
。