2016-08-07 35 views
-3

的问题是对相关产品产量显示它在每一个相关的产品包装盒相同的总计入Opencart的数相同的product_id输出。所以,它只看到主要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']), 

      ); 
+5

''这些'<?php回声“伤害”; ?>'你的'<?php回声“眼睛”; ?>'? – Chris

+0

@Chris:Opencart伤害了,是的。 – twicejr

回答

0

你想存储在项目本身销售的商品的数量。 将数字递增,就好像它是反向股票一样。所以,我只是改变表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'] . ")

+0

Soo它应该看起来像那样? $ this-> db-> query(“UPDATE”.DB_PREFIX。“product SET quantity =(quantity - amount_sold =(amount_sold +”。(int)$ order_product ['quantity']。“)WHERE product_id ='”。( int)$ order_product ['product_id']。“'AND subtract ='1'”); –

+0

如果它是正确的,接下来会怎样? –

+0

如果存储现在可以正常工作,则只需使用'amount_sold' 步骤1:修改ControllerProductProduct :: index()以在$ data中包含'amount_sold'(它可以从$ this-> model_catalog-_product-> getProduct()在159行附近使用,因为它从产品中选择* 。表已经)所以只添加如果($产品的详细信息){$数据[ 'AMOUNT_SOLD'] = $产品的详细信息[ 'AMOUNT_SOLD'] 第2步:修改模板指向 'AMOUNT_SOLD' 完成:)。 – twicejr

相关问题