我是Magento的新手。我想在newsletter_subscriber
表格中添加一列,以便在mysql4-upgrade-1.6.0.0-1.6.0.1.php
app/code/core/mage/newsletter_setup/
<?php
$installer = $this;
$installer->startSetup();
$installer->getConnection()->addColumn(
$this->getTable('newsletter/subscriber'), //table name
'groupid', //column name
'varchar(100) NOT NULL' //datatype definition
);
$installer->endSetup();
?>
我更新了配置文件:
<modules>
<Mage_Newsletter>
<version>1.6.0.0</version>
</Mage_Newsletter>
</modules>
它没有用,请指导我做错了
答案 0 :(得分:5)
不建议添加/修改或更改任何核心文件。最好是制作一个新模块来添加额外的列。
您必须在app/code/local/your/module/sql/your_module_setup/upgrade-0.1.2-0.1.3.php
文件中提及正确的模块升级版本。 (这意味着您将模块版本从0.1.2升级到0.1.3)。如果您没有使用升级脚本,请记住在模块<resources>
中定义config.xml
,并且设置脚本名称为mysql4-install-0.1.0.php
下面是Mysql设置脚本文件 - upgrade-0.1.2-0.1.3.php
<?php
ini_set('display_errors', '1');
$installer = $this;
$installer->startSetup();
$installer->getConnection()
->addColumn(
$installer->getTable('newsletter/subscriber'), //Get the newsletter Table
'your_field_name', //New Field Name
array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT, //Field Type like TYPE_INTEGER ...
'nullable' => true,
'length' => 255,
'default' => 'Some thing default value',
'comment' => 'Your field comment'
)
);
$installer->endSetup();
?>
之后更改app / code / local / your / module / etc / config.xml版本,例如
<config>
<modules>
<NameSpace_ModuleName>
<version>0.1.3</version> <!-- if upgrade script version is 0.1.3 -->
</NameSpace_ModuleName>
</modules>
<global>
<resources>
<NameSpace_ModuleName_setup>
<setup>
<module>NameSpace_ModuleName</module>
<class>Mage_Catalog_Model_Resource_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</NameSpace_ModuleName_setup>
</resources>
</global>
</config>
答案 1 :(得分:2)
使用设置脚本,它们将根据模块版本的变化执行。
在您的情况下,您的文件名为[ 5 6
7 8 ]
mysql4-upgrade-1.6.0.0-
,而您的版本为1.6.0.1.php
。要使此特定脚本执行,您需要将版本提升为1.6.0.0
。
话虽如此 - 您正在为核心Magento模块添加功能,这是不好的做法。您应该将其移动到本地池(1.6.0.1
)模块中。
答案 2 :(得分:0)
只需在dbscripts文件夹中创建一个脚本,然后从终端或Web浏览器运行该文件即可。
例如,将文件保存在pub/dbscripts/filename.php
中,粘贴此代码并根据您的要求进行更改
<?php
use Magento\Framework\App\Bootstrap;
require '../../app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection();
$salesTable = $resource->getTableName('Table_Name');
$sql = "ALTER TABLE ".$salesTable. " ADD `Field_name` varchar(255)";
$connection->query($sql);
echo"Script Run Successfully";
从浏览器(如
)运行此文件domain.name/pub/dbscripts/filename.php