【问题标题】:Magento custom model won't allow DB table changesMagento 自定义模型不允许更改数据库表
【发布时间】:2012-02-03 19:40:47
【问题描述】:

我在创建自定义 Magento 模块时遇到了问题。

简而言之,我在前端为客户上传创建了一个简单的模块。我创建了一个新表,其中包含一些通用字段,例如“project_id”、“title”等。这一切都很好……我可以设置模型变量并使用 model->save(); 将它们保存到我的表中。

刚才我需要添加一个新字段或更改旧字段的名称。由于我无法理解新字段和更改的字段的原因,不会通过 model->save() 存储到其中;即使我可以从调试器中看到模型中的新变量和更改的变量设置正确。我希望有人已经遇到过这个问题,并且可以对这个极其令人沮丧的问题有所了解。在帮助到来之前,我的项目处于停滞状态!

【问题讨论】:

    标签: magento module save


    【解决方案1】:

    清除缓存。 Magento 用于读取数据库列的 Zend 类将缓存该信息(这样就不必为每个模型加载/保存执行 DESCRIBE)。清除缓存,Magento 应该会看到新列,并且值将开始保存到数据库中。

    【讨论】:

    • 自项目启动以来所有缓存都已被禁用,但这有效!这是我想检查的最后一件事,因为它们在生产过程中一直处于禁用状态。为什么会这样?
    • 所有 Magento 缓存已被禁用。我从来没有深入研究过,我认为这是 Zend 框架深处的某种缓存,可能是通过注册表对象。您启用/禁用的 Magento 缓存用于通过 Magento 的缓存类设置的键。由于 Zend DB 类自己做了一些缓存,所以这被遗漏了。将其归结为 Magento is Not Zend 的另一个实例。
    • 该响应对我有用。谢谢您的帮助!我相信会有更多的询问......
    • 此外,您应该从升级脚本中清除 DDL 缓存。缓存的 DDL 数据仍然被缓存的原因是它不属于任何可通过管理员管理的标签。
    • 开发者实践中的好习惯是在部署或测试前调用rm -rf var/cache/*清除所有元缓存
    【解决方案2】:

    在 Magento 管理面板中禁用缓存似乎还不够。您应该手动删除 /var/cache 的内容。

    【讨论】:

      【解决方案3】:

      从控制台运行rm -rf var/cache/*,因为您将无法进入管理缓存管理屏幕

      【讨论】:

        猜你喜欢
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 2021-10-08
        • 2021-10-29
        • 2019-02-06
        相关资源
        最近更新 更多