问题是相关产品的输出,它在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']),
);
您需要将售出的商品数量存储在商品本身上。增加数字,就好像它是反向库存一样。所以,我只需要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'] . ")