【问题标题】:Can't create tables in magento module无法在 magento 模块中创建表
【发布时间】:2015-12-15 13:17:13
【问题描述】:

我是 magento 的新手。我想创建一个简单的模块。找了一篇文章,开始写代码。有一部分如何在 magento modul 中创建表,所以我尝试了,但我做不到。 ?我有 config.xml 文件:

<?xml version="1.0" ?>
     <config>
         <modules>
             <DS_News>
                 <version>0.0.1</version>
             </DS_News>
         </modules>
    <frontend>
        <layout>
            <updates>
                <dsnews>
                    <file>ds_news.xml</file>
                </dsnews>
            </updates>
        </layout>
        <routers>
            <dsnews>
                <use>standard</use>
                <args>
                    <module>DS_News</module>
                    <frontName>news</frontName>
                </args>
            </dsnews>
        </routers>
    </frontend>
    <global>
        <models>
            <dsnews>
                <resourceModel>dsnews_resource</resourceModel>
            </dsnews>
            <dsnews_resource>
                <entities>
                    <table_news>
                        <table>ds_news_entities</table>
                    </table_news>
                </entities>
            </dsnews_resource>
        </models>
        <resources>
            <dsnews_setup>
                <setup>
                    <module>DS_News</module>
                </setup>
            </dsnews_setup>
        </resources>
    </global>
</config>

并且有这样的 install-0.0.1.php 文件:

<?php
       $installer = $this;
       $tableNews = $installer->getTable('dsnews/table_news');
       $installer->startSetup();
       $connection = $installer->getConnection();
       $installer->getConnection()->dropTable($tableNews);
       $table = $installer->getConnection()
        ->newTable($tableNews)
        ->addColumn('news_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
            'identity'  => true,
            'nullable'  => false,
            'primary'   => true,
            ))
        ->addColumn('title', Varien_Db_Ddl_Table::TYPE_TEXT, '255', array(
            'nullable'  => false,
            ))
        ->addColumn('content', Varien_Db_Ddl_Table::TYPE_TEXT, null, array(
            'nullable'  => false,
            ))
        ->addColumn('created', Varien_Db_Ddl_Table::TYPE_DATETIME, null, array(
            'nullable'  => false,
        ));
       $installer->getConnection()->createTable($table);
       $installer->endSetup();
?>

如果我在我的数据库中理解正确,我必须得到ds_news_entities 表。我在core_resource 表中有一个dsnews_setup 行,但我找不到我想要的表。有人可以帮帮我吗?

【问题讨论】:

    标签: mysql sql magento magento-1.9


    【解决方案1】:

    你的 config.xml 必须是这种方式。

    <?xml version="1.0"?>
    <config>
        <modules>
            <[Namespace]_[Module]>
                <version>0.1.0</version>
            </[Namespace]_[Module]>
        </modules>
        <frontend>
            <routers>
                <[module]>
                    <use>standard</use>
                    <args>
                        <module>[Namespace]_[Module]</module>
                        <frontName>[module]</frontName>
                    </args>
                </[module]>
            </routers>
            <layout>
                <updates>
                    <[module]>
                        <file>[module].xml</file>
                    </[module]>
                </updates>
            </layout>
        </frontend>   
        <global>
            <models>
                <[module]>
                    <class>[Namespace]_[Module]_Model</class>
                    <resourceModel>[module]_mysql4</resourceModel>
                </[module]>
                <[module]_mysql4>
                    <class>[Namespace]_[Module]_Model_Mysql4</class>
                    <entities>
                        <[module]>
                            <table>[module]</table>
                        </[module]>
                    </entities>
                </[module]_mysql4>
            </models>
            <resources>
                <[module]_setup>
                    <setup>
                        <module>[Namespace]_[Module]</module>
                    </setup>
                    <connection>
                        <use>core_setup</use>
                    </connection>
                </[module]_setup>
                <[module]_write>
                    <connection>
                        <use>core_write</use>
                    </connection>
                </[module]_write>
                <[module]_read>
                    <connection>
                        <use>core_read</use>
                    </connection>
                </[module]_read>
            </resources>
            <blocks>
                <[module]>
                    <class>[Namespace]_[Module]_Block</class>
                </[module]>
            </blocks>
            <helpers>
                <[module]>
                    <class>[Namespace]_[Module]_Helper</class>
                </[module]>
            </helpers>
        </global>
    </config>
    

    并且有这样的 install-0.0.1.php 文件:

    /** @var $installer Mage_Core_Model_Resource_Setup */
    $installer = $this;
    
    $installer->startSetup();
    
    $table = $installer->getConnection()
        ->newTable($installer->getTable('dsnews/table_news'))
        ->addColumn(
            'news_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null,
            array(
                'identity' => true,
                'unsigned' => true,
                'nullable' => false,
                'primary'  => true,
            ), 'Unique identifier'
        )
        ->addColumn(
            'title', Varien_Db_Ddl_Table::TYPE_TEXT, 100, array(), 'News title'
        )
        ->addColumn(
            'content', Varien_Db_Ddl_Table::TYPE_TEXT, null, array(), 'News content'
        )
        ->addColumn(
            'author', Varien_Db_Ddl_Table::TYPE_TEXT, 100, array(), 'News author'
        );
    
    if (!$installer->getConnection()->isTableExists($table->getName())) {
        $installer->getConnection()->createTable($table);
    }
    
    $installer->endSetup();
    

    希望对您有所帮助。

    【讨论】:

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