重写sql模块

时间:2011-02-28 09:29:22

标签: magento module rewrite extend

您好我正在尝试将所有数据库更新sql的文件从核心重写或扩展到本地但没有成功,直到现在我有:

CORE:

+core
 +Mage
  +Mymodule
   +...
   +etc
    -config.xml
   +sql
    +mymodule_setup
     -mysql4-install-0.1.0.php
     -mysql4-install-0.1.0-0.1.1.php
     -...

本地

+local
 +Mage
  +Mynamespace
   +Mymodule
    +...
    +etc
     -config.xml
    +sql
     +mymodule_setup
      -mysql4-install-0.1.0.php
      -mysql4-install-0.1.0-0.1.1.php
      -...

所以我的问题是在升级Magento时避免出现问题,如何在核心本地中配置config.xml,重写阻止模型,我做了成功,但不是sql,直到现在我有:

本地

    <?xml version="1.0"?>
<config>
    <modules>
        <Mage_Mymodule>
            <version>0.1.1</version>
        </Mage_Mymodule>
    </modules>
    <global>
        <resources>
            <mynamespace_mymodule_setup>
                <setup>
                    <module>Mynamespace_Mymodule</module>
                    <class>Mage_Mymodule_Model_Resource_Eav_Mysql4_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </mynamespace_mymodule_setup>
        </resources>
        <models>
            <Mymodule>
                <rewrite>
                    <abc>Mynamespace_Mymodule_Model_Abc</abc>
                </rewrite>
            </Mymodule>
        </models>
    </global>
</config>
  

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

无法覆盖安装/更新脚本。 你必须: 1.设置模块的依赖关系,必须最后安装。 2.在安装脚本中,您可以使用任何内容。 你最好使用Varien_Db_Adapter_Pdo_Mysql方法。

答案 1 :(得分:0)

我认为问题在于您已将资源设置中的类更改为可能不存在的类。试试:

<setup>
   <module>Mynamespace_Mymodule</module>
   <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
</setup>

答案 2 :(得分:0)

你可以制作一些黑客,就像在你的安装类中覆盖受保护的方法_getAvailableDbFiles并使用dirname( FILE )而不是Mage :: getModuleDir(Mage_Core_Model_Resource_Setup~480)重写它