php - Opencart 3 过滤器产品
问题描述
$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 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 " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 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";
if (!empty($data['filter_category_id'])) {
if (!empty($data['filter_sub_category'])) {
$sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)";
} else {
$sql .= " FROM " . DB_PREFIX . "product_to_category p2c";
}
if (!empty($data['filter_filter'])) {
$sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)";
} else {
$sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)";
}
} else {
$sql .= " FROM " . DB_PREFIX . "product p";
}
//FILTRU
$sql .= " INNER JOIN " . DB_PREFIX . "product_option_value ovi ON (p.product_id=ovi.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') . "' ";
//FILTRU
if (isset($this->request->get['option_value'])) {
foreach ($_GET['option_value'] as $key => $value) {
$sql .= " AND ovi.option_value_id='$value'";
}
}
FILTRU 在哪里我插入了一个代码,以查看仅在浏览器中选择 option_value 的类别产品。如果我只选择一个选项,它可以工作,但是当我有超过 1 个选项时,她不会选择任何东西。
我该如何选择具有更多选项的所有产品?
所有产品至少有 3 个 option_values。
解决方案
推荐阅读
- laravel - 如何验证出生日期和最低年龄
- python-3.x - 有没有办法做某种重载来喜欢 basestring.__rshift__(self, other)
- javascript - 使用 ko.js 将预定义状态绑定到复选框
- javascript - 在单选按钮选择上显示文本
- laravel - Laravel 监控工具
- sql - 小计行的索引?
- java - Spring Boot 资源服务器使用 HTTP POST 而不是 HTTP GET 验证令牌
- java - Java 套接字本地服务器
- ibm-cloud - alp 服务器目录的 CloudFoundry 推送上的 ClassNotFound,但 EAR 的推送上没有:-?
- wordpress - WP_Query 查找所选日期范围内带有 post_modified 或 post_date 的任何帖子