我正在尝试在Magento中重命名自定义属性,以下代码添加了我只需要使用Magento安装程序脚本删除的等效属性:
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute("customer", "is_school", array(
"type" => "int",
"backend" => "",
"label" => "Organisation Type?",
"input" => "int",
"source" => "",
"visible" => false,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => ""
));
$installer->getConnection()->addColumn($installer->getTable('sales/quote'), 'is_school', 'int(11)');
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'is_school', 'int(11)');
// need code to rename these two column above from is_school to 'org_type'
$installer->endSetup();
答案 0 :(得分:1)
$installer->getConnection()
->changeColumn($tableName, $oldColumnName, $newColumnName,$definition);
其中
`changeColumn` method is used to modify and rename existing column in the table. It has such parameters:
$tableName - the table name that should be modified
$oldColumnName- the old name of the column, that should be renamed and modified
$newColumnName- a new name of the column
$definition - a new definition of the column (INT(10), DECIMAL(12,4), etc)
了解更多信息
addColumn()
方法将新列添加到退出表。它有这样的参数:
$tableName
- 应修改的表名$columnName
- 应添加的列名称$definition
- 列的定义(INT(10)
,DECIMAL(12,4)
等)addConstraint()
方法创建一个新的约束外键。它有这样的参数
$fkName
- foreing key name,每个数据库应该是唯一的,如果你没有指定FK_
前缀,它将自动添加$tableName
- 添加外键的表名$columnName
- 应该引用另一个表的列名,如果您有复杂的外键,请使用逗号指定多个列$refTableName
- 将处理外国表名称$refColumnName
- 外表中的列名$onDelete
- 对外表中的行删除操作。可以是空字符串(不执行任何操作),cascade
,set null
。此字段是可选字段,如果未指定,则将使用cascade
值。 $onUpdate
对外表中行键更新的操作。可以是空字符串(不执行任何操作),cascade
,set null
。此字段是可选字段,如果未指定,则将使用cascade
值。 $purge
- 在外键添加后启用清除行的标志(例如删除未引用的重新记录)addKey()
方法用于向表中添加索引。它有这样的参数:
$tableName
- 应添加索引的表名$indexName
- 索引名称$fields
- 索引中使用的列名称$indexType
- 索引的类型。可能的值包括:index
,unique
,primary
,fulltext
。此参数是可选的,因此默认值为index
dropColumn()
方法用于从现有表中删除列。它有这样的参数:
$tableName
- 应修改的表名$columnName
- 应移除的列名称dropForeignKey()
方法用于删除外键。它有这样的参数:
$tableName
- 删除外键的表名$fkName
- 外出的关键名称dropKey()
方法用于删除表索引。它有这样的参数:
$tableName
- 应删除索引的表名$keyName
- 索引名称modifyColumn
方法用于修改表中的现有列。它有这样的参数:
$tableName
- 应修改的表名$columnName
- 应重命名的列名称$definition
- 列的新定义(INT(10)
,DECIMAL(12,4)
等)changeColumn
方法用于修改和重命名表中的现有列。它有这样的参数:
$tableName
- 应修改的表名$oldColumnName
- 列的旧名称,应重命名和修改$newColumnName
- 列的新名称$definition
- 列的新定义(INT(10)
,DECIMAL(12,4)
等)changeTableEngine
方法用于更改表引擎,例如从MyISAM到InnoDB。它有这样的参数:
$tableName
- 表名$engine
- 新引擎名称(MEMORY
,MyISAM
,InnoDB
等)如果您有任何疑问,请告诉我