按库存状况过滤产品 Opencart

问题描述

最初我为我的英语感到抱歉。

有一项任务是根据促销的可用性(特殊产品)过滤类别中的产品。我找到了一个合适的模块-“按可用性过滤产品”,并试图使其适应当前任务。

在模型中,代替:

$sql .= " AND (p.stock_status_id = '6' OR p.quantity > 0)";

我写了

$sql .= " AND (ps.product_id = '*')";

但是发生错误,即查询结果中没有这样的表(

因此,在模型中我添加:

"LEFT 
 JOIN " . DB_PREFIX . "product_special ps 
   ON (p.product_id = ps.product_id)"

即代替这个

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

我们得到

  $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_special ps ON (p.product_id = ps.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

但是我仍然收到错误:

Fatal error: Uncaught Exception: Error: Unknown column 'ps.product_id' in 'where clause'<br />Error No: 1054<br />SELECT p.product_id,(SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating,(SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC,pd2.price ASC LIMIT 1) AS discount,(SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC,ps.price ASC LIMIT 1) AS special FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LE in /opt/lampp/htdocs/oc3_tst/system/library/db/mysqli.php on line 40

但是在这种情况下,错误文本中已经存在“ oc_product_special”表...

已经变态了,

      if (!empty($data['filter_instock'])) {
       $results = $this->model_catalog_product->getProductSpecials();
         if ($results) {
           foreach ($results as $result) {
         $sql .= " AND (p.product_id = '" . $result['product_id'] . "')";
      }
    }
   }

仅在只有一项的情况下显示特殊项目)

请告诉我我做错了什么?也许我在错误的位置插入了JOIN?还是使用控制器更容易做到这一点?

这是文件中我适合opencart 3的模块(最初是第二版)

https://drive.google.com/file/d/1mLlmZuB76hoBVbyk3RmxnJJaRFXN34s1/view?usp=sharing

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...