Symfony1 在迁移期间添加新的枚举列
有谁能告诉我,如何向我的模式中添加一个enum类型的新列,以实现条令迁移?修改您的模式,但不要构建模型。运行doctrine schema diff,然后将为您生成一个迁移类。最后,您可以重建模型/表单/过滤器Symfony1 在迁移期间添加新的枚举列,symfony1,migration,doctrine,Symfony1,Migration,Doctrine,有谁能告诉我,如何向我的模式中添加一个enum类型的新列,以实现条令迁移?修改您的模式,但不要构建模型。运行doctrine schema diff,然后将为您生成一个迁移类。最后,您可以重建模型/表单/过滤器 修改您的模式 运行/symfony doc:generate migrations diff 这将在lib/migrations/doctor中生成一个或多个文件/ 运行/symfony doc:migrate 这将把生成的迁移应用到数据库 运行/symfony doc:build
/symfony doc:generate migrations diff
这将在lib/migrations/doctor中生成一个或多个文件/
/symfony doc:migrate
这将把生成的迁移应用到数据库
/symfony doc:build--所有类
这适用于symfony>=1.3/1.4,并将根据修改后的模式重建所有表单/过滤器/模型类
symfony doctrine:build --all-classes --and-migrate
如果您需要自己编写迁移脚本,这里有一个语法示例——我在任何地方都没有找到合适的语法规范
$this->addColumn('tablename', 'column_name', 'enum', false,
array('fixed' => 1,
'values' =>
array(0 => 'auto',
1 => 'manual',
2 => 'unknown'),
'default' => 'unknown',
'notnull' => true,
'length' => NULL,
));
从条令迁移运行它的最简单方法是注册一个新映射。然后,如果需要,可以在实体内强制执行值。()
我也遇到了同样的问题,并在
ProjectConfiguration.class.php
public function configureDoctrine(Doctrine_Manager $manager) {
$manager->setAttribute(Doctrine_Core::ATTR_USE_NATIVE_ENUM, true);
}
之后,我使用此方法调用并获取本机mysql枚举:
class MyMigration extends Doctrine_Migration_Base {
public function up() {
$this->changeColumn(self::tableName, 'columName', 'enum', null,
array(
'fixed' => true,
'length' => null,
'notnull' => true,
'values' => array(
0 => 'Option 1',
1 => 'Option 2'
)
)
);
}
需要做的事。/symfony doc:我想先生成不同的迁移。
public function configureDoctrine(Doctrine_Manager $manager) {
$manager->setAttribute(Doctrine_Core::ATTR_USE_NATIVE_ENUM, true);
}
class MyMigration extends Doctrine_Migration_Base {
public function up() {
$this->changeColumn(self::tableName, 'columName', 'enum', null,
array(
'fixed' => true,
'length' => null,
'notnull' => true,
'values' => array(
0 => 'Option 1',
1 => 'Option 2'
)
)
);
}