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

这可能是一个复杂的问题,我很喜欢,我已经敲了好几天头没有解决方案,甚至谷歌也没有找到我的答案。在 opencart 中,您在数据库中有一个名为“order_totals”的表,其结构如下:

http://img3.mukewang.com/61e136050001762706520350.jpg

默认情况下,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地在视图表中分别列出它们,如下所示

http://img.mukewang.com/61e1361100019b6d06270091.jpg

通常情况下,我们可以添加过滤代码的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并在管理视图仪表板中列出它们?


达令说
浏览 138回答 1
1回答

宝慕林4294392

您可以使用条件聚合直接使用 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) totalFROM order_totalsGROUP BY order_id如果您需要过滤特定的order_id,您可以在查询中添加一个WHERE子句。
打开App,查看更多内容
随时随地看视频慕课网APP