为了账号安全,请及时绑定邮箱和手机立即绑定

Opencart 分别获取某些订单总计代码标题的值

Opencart 分别获取某些订单总计代码标题的值

PHP
达令说 2022-01-14 16:33:21
这可能是一个复杂的问题,我很喜欢,我已经敲了好几天头没有解决方案,甚至谷歌也没有找到我的答案。在 opencart 中,您在数据库中有一个名为“order_totals”的表,其结构如下:默认情况下,Opencart 带有一个模型函数,它根据订单 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;}因此,如果您将该函数与数据库的附加图像进行比较,它应该返回 4 项“小计、运费、付款、总计”,这在查看时很清楚,order_id并且order_total_id我的问题是我如何能够value具体code地在视图表中分别列出它们,如下所示通常情况下,我们可以添加过滤代码的SQL查询返回被请求的值。例如,如果我想要value的code shipping,我可以使用下面的代码: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;}如果我们示例的订单 id 为 1,这将返回 Shipping 所需的值数组(1){[0]=>数组(1){[“值”]=>字符串(6)“5.0000”}}这很好,但是要获得运输、小计、付款和总计的价值,我需要创建多个分开的功能,我认为这不是一个有效的解决方案。如何分别获取value每个code并在管理视图仪表板中列出它们?
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您可以使用条件聚合直接使用 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子句。


查看完整回答
反对 回复 2022-01-14
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信