问题是在每个相关产品包装盒上显示的相关产品的输出相同 OpenCart 中的总计数。所以,它只看到主product_id
。所以,必须以某种方式表明相关的product_id
。我尝试了很多方法,但它不适合我。有人可以帮我解决这个问题吗?
模块上有功能:
public function getUnitsSold($product_id) {
$query = $this->db->query("SELECT SUM(op.quantity) AS total FROM `" . DB_PREFIX . "order_product` op LEFT JOIN `" . DB_PREFIX . "order` o ON (op.order_id = o.order_id) WHERE o.order_status_id = '5' AND op.product_id = '" . (int)$product_id . "'");
if ($query->row) {
return $query->row['total'];
} else {
return FALSE;
}
}
这只是模板输出。
<?php if ($tproducts) { ?>
<?php foreach ($tproducts as $product) { ?>
<?php if ($product['units_sold']) { ?>
<?php echo $text_units_sold; ?> <?php echo $product['units_sold']; ?>
<?php } ?>
<?php } ?>
<?php } ?>
在控制器中,相关产品数组是否可能指示可能此函数查询然后正确输出。
类似units_sold
的东西?
$data['tproducts'][] = array(
'product_id' => $result['product_id'],
'units_sold' => $this->db->query("SELECT SUM(op.quantity) AS total FROM `" . DB_PREFIX . "order_product` op LEFT JOIN `" . DB_PREFIX . "order` o ON (op.order_id = o.order_id) WHERE o.order_status_id = '5' AND op.product_id = '" . (int)$product_id . "'"),
);
或者
$data['tproducts'][] = array(
'product_id' => $result['product_id'],
'units_sold' => $this->model_catalog_product->getUnitsSold($this->request->get['product_id']),
);
答案 0 :(得分:0)
您需要在项目本身上存储已售商品的数量。
将数字增加,就像它是反向股票一样。
所以,我只是ALTER TABLE oc_product
ADD amount_sold
INT(8)NULL DEFAULT NULL;
然后,只显示该简单的列值。必须修改订单的存储并使其变慢(按.001 - .0001s的顺序)。
这样,即使您的订单商品表变得庞大,商店将来也会保持良好的表现。
让存储处理程序成为工作的马。看看ModelCheckoutOrder :: addOrderHistory(),当他们减去数量时,你必须添加你的数量:)
"UPDATE " . DB_PREFIX . "product SET /*.... opencart default shit */, amount_sold = (amount_sold + " . (int)$order_product['quantity'] . ")