问题是此功能在相关产品上显示相同的product_id输出

时间:2016-08-07 21:15:06

标签: php opencart2.x

问题是在每个相关产品包装盒上显示的相关产品的输出相同 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']),

            );

1 个答案:

答案 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'] . ")