Php Opencart单独获取特定订单总计代码标题的值

Php Opencart单独获取特定订单总计代码标题的值,php,mysql,sql,opencart,e-commerce,Php,Mysql,Sql,Opencart,E Commerce,这可能是一个复杂的问题,我一直在敲我的头好几天没有解决办法,甚至谷歌也没有找到答案。在opencart中,数据库中有一个名为order_totals的表,其结构如下: 默认情况下,Opencart附带一个模型函数,该函数根据订单Id返回订单总额,比如订单Id='1' 因此,如果您将该函数与数据库的附加图像进行比较,它应该返回4项小计、运费、付款、总计,这在查看订单号和订单号时是清楚的 我的问题是,如何获得特定代码的值,以便在视图表中单独列出它们,如下所示 通常,我们可以在SQL查询中添加过滤代码

这可能是一个复杂的问题,我一直在敲我的头好几天没有解决办法,甚至谷歌也没有找到答案。在opencart中,数据库中有一个名为order_totals的表,其结构如下:

默认情况下,Opencart附带一个模型函数,该函数根据订单Id返回订单总额,比如订单Id='1'

因此,如果您将该函数与数据库的附加图像进行比较,它应该返回4项小计、运费、付款、总计,这在查看订单号和订单号时是清楚的

我的问题是,如何获得特定代码的值,以便在视图表中单独列出它们,如下所示

通常,我们可以在SQL查询中添加过滤代码以返回请求的值 例如,如果我想要代码传送的值,我可以使用以下代码:

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时装运所需的值

array1{[0]=>array1{[value]=>string6 5.0000}

这是伟大的,但要获得的价值航运,分_总,付款和总,我需要创建多个功能分开,我不认为这是一个有效的解决方案

如何分别获取每个代码的值并在管理视图仪表板中列出它们


谢谢大家!

您可以使用条件聚合直接使用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
如果需要筛选特定的订单id,可以向查询中添加WHERE子句

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