我是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
table 。我有一个 dsnews_setup
core_resource
中的行表,但我找不到我想要的表。有人能帮助我吗 ?
最佳答案
您的 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();
我希望这会对你有所帮助。
关于mysql - 无法在 magento 模块中创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290308/