gpt4 book ai didi

mysql - 如何在查询中计算价格值和税值

转载 作者:行者123 更新时间:2023-11-30 21:22:39 24 4
gpt4 key购买 nike

我尝试在客户输入最小值和最大值时过滤产品价格。

product.php

public function getProducts($data = array()) {
....

if (!empty($data['min'])) {
$sql .= " AND p.price BETWEEN '" .$data['min']. "' AND 9999 ";
}

使用此代码,类别页面将列出从价格 x 到 9999 的所有产品。

问题是某些产品有 tax 并且该值存储在另一个表中 (oc_tax_rate)。 那么如何得到查询产品的最终价格呢?(p.price + tax),像这样:

if (!empty($data['min'])) {
$sql .= " AND final_price BETWEEN '" .$data['min']. "' AND 9999 ";
}

当我检查页面 Controller /category.php

$this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))

以上代码将返回最终价格。

超频:v1.5.6

最佳答案

首先,当您使用 minmax 过滤器值时,您的查询不应选择 between min and 9999介于 0 和 max 之间 但你应该这样做:

if (!empty($data['min'])) {
$sql .= " AND p.price >= " . (int)$data['min'];
// ^^^^^ - against SQL injection!!!
}

if (!empty($data['max'])) {
$sql .= " AND p.price <= " . (int)$data['max'];
// ^^^^^ - against SQL injection!!!
}

此外,如评论中所述,不要忘记治愈您的代码以防止 SQL 注入(inject)!

现在,对于您的真正问题:不可能在一次查询中获得税金并计算含税价格以及产品。但是你可以在你的模型中这样做——找到这部分代码

foreach ($query->rows as $result) {
$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
}

我们将这样修改它:

foreach ($query->rows as $result) {
if (!empty($data['min'])
&& $this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')) >= $data['min']) {
$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
} else if (!empty($data['max'])
&& $this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')) <= $data['max']) {
$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
} else {
$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
}
}

关于mysql - 如何在查询中计算价格值和税值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19752541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com