Opencart分别获取某个订单总计代码标题的值
Opencart get value of certain order totals code title separately
这可能是一个我很喜欢的复杂问题,我已经苦思冥想好几天了,没有解决方案,甚至 Google 也没有找到我的答案。在 opencart 中,您在名为 "order_totals" 的数据库中有一个 Table 结构如下:
默认情况下,Opencart 带有一个模型函数,该函数 return 是基于订单 ID 的订单总计,比方说 order_id = '1'
public function getOrderTotals($order_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "' ORDER BY sort_order");
return $query->rows;
}
因此,如果您将函数与数据库的附件图像进行比较,它应该 return 4 项 "sub total, shipping rate, payment, total" 当看到 order_id
和 order_total_id
[=25 时就很清楚了=]
我的问题是如何获得特定 code
的 value
以将它们分别列在视图 table 中,如下所示
通常我们可以将 SQL 查询的过滤代码添加到 return 请求的值
例如,如果我想要 code
shipping
的 value
我可以使用以下代码:
public function getOrderTotals($order_id) {
$query = $this->db->query("SELECT value FROM " . DB_PREFIX . "order_total WHERE code = 'shipping' AND order_id = '" . (int)$order_id . "' ORDER BY sort_order");
return $query->rows;
}
这将 return 运费所需的值,如果我们示例中的订单 ID 为 1
array(1) { [0]=> array(1) { ["value"]=> string(6) "5.0000" } }
这很好,但是要获得运费、sub_total、付款和总计的价值,我需要创建多个分开的函数,我认为这不是一个有效的解决方案。
如何分别获取每个 code
的 value
并将它们列在管理视图仪表板中?
谢谢!
您可以通过使用条件聚合直接用SQL生成预期结果。
考虑:
SELECT
order_id,
MAX(CASE WHEN code = 'sub_total' THEN value END) sub_total,
MAX(CASE WHEN code = 'shipping' THEN value END) flat_shipping_rate,
MAX(CASE WHEN code = 'payment_based_fee' THEN value END) payment,
MAX(CASE WHEN code = 'total' THEN value END) total
FROM order_totals
GROUP BY order_id
如果您需要过滤特定的 order_id
,您可以在查询中添加 WHERE
子句。
这可能是一个我很喜欢的复杂问题,我已经苦思冥想好几天了,没有解决方案,甚至 Google 也没有找到我的答案。在 opencart 中,您在名为 "order_totals" 的数据库中有一个 Table 结构如下:
默认情况下,Opencart 带有一个模型函数,该函数 return 是基于订单 ID 的订单总计,比方说 order_id = '1'
public function getOrderTotals($order_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "' ORDER BY sort_order");
return $query->rows;
}
因此,如果您将函数与数据库的附件图像进行比较,它应该 return 4 项 "sub total, shipping rate, payment, total" 当看到 order_id
和 order_total_id
[=25 时就很清楚了=]
我的问题是如何获得特定 code
的 value
以将它们分别列在视图 table 中,如下所示
通常我们可以将 SQL 查询的过滤代码添加到 return 请求的值
例如,如果我想要 code
shipping
的 value
我可以使用以下代码:
public function getOrderTotals($order_id) {
$query = $this->db->query("SELECT value FROM " . DB_PREFIX . "order_total WHERE code = 'shipping' AND order_id = '" . (int)$order_id . "' ORDER BY sort_order");
return $query->rows;
}
这将 return 运费所需的值,如果我们示例中的订单 ID 为 1
array(1) { [0]=> array(1) { ["value"]=> string(6) "5.0000" } }
这很好,但是要获得运费、sub_total、付款和总计的价值,我需要创建多个分开的函数,我认为这不是一个有效的解决方案。
如何分别获取每个 code
的 value
并将它们列在管理视图仪表板中?
谢谢!
您可以通过使用条件聚合直接用SQL生成预期结果。
考虑:
SELECT
order_id,
MAX(CASE WHEN code = 'sub_total' THEN value END) sub_total,
MAX(CASE WHEN code = 'shipping' THEN value END) flat_shipping_rate,
MAX(CASE WHEN code = 'payment_based_fee' THEN value END) payment,
MAX(CASE WHEN code = 'total' THEN value END) total
FROM order_totals
GROUP BY order_id
如果您需要过滤特定的 order_id
,您可以在查询中添加 WHERE
子句。