【问题标题】:Magento: Not able to save data on multiple tables on DBMagento:无法将数据保存在数据库的多个表上
【发布时间】:2012-08-16 20:44:57
【问题描述】:

我遵循了一些建议,将一些数据从一个表复制到数据库上的另一个表,但它不起作用。

根据我收到的关于这个问题的回复:Magento: How to save data to order_payment and quote_payment

我尝试对 Mage/Sales/etc/Config.xml 文件执行以下操作

<sales_convert_order_payment>
            <cc_bankname>
                <to_quote_payment>cc_bankname</to_quote_payment>
            </cc_bankname>
</sales_convert_order_payment>

还有这个

<sales_convert_quote_payment>
            <cc_bankname>
                <to_order_payment>cc_bankname</to_order_payment>
            </cc_bankname>
</sales_convert_quote_payment>

但银行名称仅保存在 sales_flat_quote_payment 表中,而不保存在 sales_flat_order_payment 表中,这是我需要在订单发票和管理后端的订单/视图下显示这些新数据的表。

如果我在数据库中手动输入数据(即银行名称),我可以在需要的地方显示此信息,但我无法跟踪每笔交易以在订单完成时手动输入数据,因为客户到达提交后查看他们的订单详细信息,在我自己查看新数据之前,他们将无法查看新数据。

有谁知道为什么数据没有被转移到 sales_fat_order_payment 表中?

我在创建新的手机号码属性时遇到了同样的问题,但我相信如果我能解决这个问题,那么我应该能够处理所有其他类似的问题。

【问题讨论】:

  • 属性有自己的表(我相信是eav_attribute)...你的属性值保存在那里吗??
  • 是的,我的新自定义属性设置在 eav_attribute 表上,就像其他相同性质的属性一样。我的意思是 cc_owner (默认情况下与信用卡所有者名称的 magento 一起安装)和我的自定义属性 cc_bankname 都列出了。现在客户使用信用卡付款时输入的新数据应保存到 sales_flat_quote_payment 和 sales_flat_order_payment 但正如我之前提到的,我的自定义属性 cc_bankname 仅将银行名称保存到 sales_flat_quote_payment 而不像 cc_owner 保存到两个表.
  • 您是否已经尝试过&lt;to_order_payment&gt;*&lt;/to_order_payment&gt;,即使用*而不是cc_name作为节点值?
  • @JürgenThelen 是的,我已经用 * 和样本上的值本身进行了尝试。无论哪种方式,我都会得到相同的结果。我什至尝试编辑 core/mage/sales/etc/config.xml 以查看它是否是我的本地/mage 文件没有被我的 Magento 拾取,但它仍然不起作用。
  • 我会检查Mage_Sales_Model_Convert_Quote::paymentToOrderPayment() 是否真的会被调用。如果是这样,请打开调试器和单一跟踪以查找问题。如果没有调用该方法,请检查您的付款方式代码为什么它没有调用转换方法。

标签: magento ecommerce-sales


【解决方案1】:

该技术(使用与 Mage 相同的名称命名)不适用于 config.xml。 这个怎么运作?你需要阅读这篇由 Alanstorm http://alanstorm.com/magento_config_declared_modules_tutorial撰写的文章

您需要通过在 app/etc/modules 中定义来创建自己的模块(当然您应该将其命名为 Mage 以外的名称)。

例如: app/etc/modules/Test_Sales.xml

内容:

<?xml version="1.0"?>
<config>
    <modules>
        <Test_Sales>
            <active>true</active>
            <codePool>local</codePool>
        </Test_Sales>
    </modules>
</config>

app/code/local/Test/Sales/etc/config.xml -> 在这里定义你的新配置

在旧版本的 magento 中,销售订单以 eav 类型存储。 在更高版本中,它已被扁平化。 看名字:sales_flat_quote_payment,sales_flat_order_payment

Magento 始终保持其数据向后兼容,这就是为什么它在 eav_attribute 中具有属性名称 cc_owner

在您的情况下,您不需要在eav_attribute 中创建新值(您只需在sales_flat_quote_paymentsales_flat_order_payment 中添加列cc_bankname,我很确定您已经创建了)。

正如你之前所说,它没有保存到sales_flat_order_payment的问题是因为缓存问题(Magento缓存了config.xml所以你需要刷新它System &gt; Cache Management &gt; Configuration

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多