从magento模块创建一个新表

Zac*_*Zac 2 php mysql database magento

我正在尝试拥有一个管理模块,我正在努力在数据库中创建一个新表.我已经设置了什么

应用程序/代码/本地/富/酒吧/ SQL/mysql4安装,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();
Run Code Online (Sandbox Code Playgroud)

这在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>
Run Code Online (Sandbox Code Playgroud)

我正在使用的案例匹配此示例,其中我的公司大写,模块名称全部为大写.我想也许是在绊倒我?我的理解是,一旦我运行命中该模块的页面,它将触发该mysql来创建表.那是对的吗?还有什么我应该做的吗?

我非常感谢任何帮助.

Jim*_*ran 13

如果没有运行安装/升级脚本,请检查以下内容:

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

  2. 确保您的资源在config.xml文件中的正确位置声明.它们应该在<global>标签内(这在您的情况下似乎是正确的).

  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的调试Magento安装脚本的指南.