【问题标题】:Create a new table from magento module从 magento 模块创建一个新表
【发布时间】:2012-01-05 20:50:16
【问题描述】:

我正在尝试使用我正在处理的管理模块在数据库中创建一个新表。我设置了什么

app/code/local/Foo/BAR/sql/mysql4-install-0.1.0.php

<?php
  $installer = $this;
  $installer->startSetup();

  $installer->run("
    DROP TABLE IF EXISTS {$this->getTable('notes')};

    CREATE TABLE {$this->getTable('notes')} (
      `ppr_id` int(11) NOT NULL AUTO_INCREMENT,
      `notesku` bigint(20) NOT NULL,
      `notestatus`  smallint(16),
      PRIMARY KEY (`notes`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
  ");

  $installer->endSetup();

这在 app/code/local/Foo/BAR/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Foo_BAR>
            <version>0.1.0</version>
        </Foo_BAR>
    </modules>    

    <global>
            <models>
                <BAR>
                    <class>Foo_BAR_Model</class>
                    <resourceModel>BAR_mysql4</resourceModel>
                </BAR>

                <BAR_myslq4>
                    <class>Foo_BAR_Model_Mysql4</class>
                    <entities>
                        <BAR>
                            <table>notes</table>
                        </BAR>
                    </entities>
                </BAR_myslq4>           
            </models>

            <resources>
                <BAR_setup>
                    <setup>
                        <module>Foo_BAR</module>
                    </setup>
                    <connection>
                        <use>core_setup</use>
                    </connection>
                </BAR_setup>
                <BAR_write>
                    <connection>
                        <use>core_write</use>
                    </connection>
                </BAR_write>
                <BAR_read>
                    <connection>
                        <use>core_read</use>
                    </connection>
                </BAR_read>
            </resources>
    </global>    

    <admin>
        <routers>
            <BAR>
                <use>admin</use>
                <args>
                    <module>Foo_BAR</module>
                    <frontName>bar</frontName>
                </args>
            </BAR>      
        </routers>
    </admin>



      <adminhtml>
        <menu>
            <catalog>
                <children>
                     <BAR_menu translate="title" module="BAR">
                        <title>BAR</title>
                        <children>
                            <list translate="title" module="BAR">
                                <title>Bar</title>
                                <action>bar/index/index</action>
                            </list>                       
                        </children>
                    </BAR_menu>
                </children>
            </catalog>
        </menu>
    </adminhtml>       
</config>

我使用的案例与我的公司大写且模块名称全部大写的示例相匹配。我在想也许这让我绊倒了?我的理解是,一旦我运行该模块的页面,它将触发该 mysql 来创建表。那是对的吗?还有什么我应该做的吗?

非常感谢您对此提供的任何帮助。

【问题讨论】:

  • 触发任何页面都应该安装你的模块,因为 Magento 在任何路由发生之前触发模块安装/升级过程。如果没有表出现,首先要检查的是您的模块安装脚本是否已运行,然后您可以通过检查数据库中的 core_resources 表来检查代码值为 BAR_setup 的行。
  • 谢谢卡格斯。我检查了 core_resources 表,它没有显示在那里。
  • 您是否在 app/etc/modules/ 中创建了一个文件来启用您的模块?
  • 是的,模块正在工作,我还有其他页面正在加载。这是我正在构建的东西。

标签: php mysql database magento


【解决方案1】:

如果安装/升级脚本未运行,请检查以下几点:

  1. Magento 正在加载您的模块吗?转到系统 > 配置 > 高级 > 高级,查看您的模块是否出现在“禁用模块输出”列表中。如果没有,Magento 根本不会加载您的模块,因此不会运行任何设置脚本。正如 Cags 在他的评论中指出的那样,如果您还没有创建一个模块,您将需要一个 app/etc/modules 中的 xml 文件来告诉 Magento 加载您的模块。

  2. 确保您的资源在 config.xml 文件中的正确位置声明。它们应该在 &lt;global&gt; 标记内(在您的情况下这似乎是正确的)。

  3. 确保您的安装文件位于正确的位置。它们应该位于模块内的 sql/ 文件夹中。我想这是你的问题,这个例子中的设置文件应该是app/code/local/Foo/BAR/sql/BAR_setup/mysql4-install-0.1.0.php

  4. 检查完以上所有内容后,如果您设置了用于调试的 IDE(并且如果您正在做任何认真的 Magento 工作,请帮自己一个忙,然后启动),在设置中设置断点文件并确保它被击中。

  5. 检查数据库中的core_resource 表中的BAR_setup 条目。如果它在那里,Magento 已经运行了一次安装脚本并且不会再次运行它。如果您需要再次运行安装脚本,请删除此记录。同样,如果您需要重新运行升级脚本,您可以更改版本号(但请确保您了解再次运行设置/升级脚本的后果)。

如果一切都失败了,请查看Alan Storm's guide to debugging Magento setup scripts

【讨论】:

    猜你喜欢
    • 2011-05-21
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多