问题是此函数向我显示相关产品上相同的product_id输出


Issue is This function shows me same product_id output on related products

问题是相关产品的输出,它在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'] . ")