【问题标题】:Get database value from order details in Prestashop backoffice从 Prestashop 后台的订单详细信息中获取数据库值
【发布时间】:2015-08-19 17:02:45
【问题描述】:

我在 ps_cart_product 中创建了一个名为 obs 的新字段。当客户将产品添加到购物车并且产品满足某些预定义的标准时,来自 ps_cart_product 的字段 obs 将使用一些附加信息进行更新。

此时一切正常。

现在我正在尝试从后台的订单详细信息中接收 obs 字段的值,但没有成功。我已经打印了 smarty 数组 $products 但我找不到 obs 字段。在哪里可以找到正确的数据库查询以便添加自定义字段?

感谢您的时间和合作。

【问题讨论】:

    标签: php mysql smarty prestashop


    【解决方案1】:

    为了从购物车产品中检索“obs”列,您必须编辑(或覆盖)/classes/Cart.php 中的 Cart->getProducts() 方法。

    此方法包含一个 SQL 查询:

    $sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, pl.`name`, p.`is_virtual`, [...]
    

    只需添加“cp.obs”就可以了。

    您可能还想检查 Order 类 (/classes/order/Order.php) 中的 getProducts() 和 getProductsDetail()。

    【讨论】:

    • 完美!谢谢。我编辑了 /classes/Cart.php 并将 LEFT JOIN '._DB_PREFIX_.'cart_product cp ON (cp.id_product = p.id_product AND ps.id_shop = od.id_shop) 添加到 getProductsDetail 函数。现在我可以将 smarty 数组与 obs 数据一起使用。还有一个问题。你知道 prestashop 在哪里将数据插入到 ps_order_detail 表中吗?我还想在此表上添加一个自定义字段。非常感谢您的帮助
    • 是的,在 /classes/PaymentModule.php 中,在 validateOrder() 方法中搜索“// Insert new Order detail list using cart for current order”。
    • 谢谢布鲁诺。您的帮助非常有用。不幸的是,我仍然找不到查询部分。
    • 最好创建一个新的单独问题:-)
    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 2020-11-26
    • 2017-01-17
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多