如何为Symfony迁移指定名称?

时间:2015-12-01 09:35:44

标签: php symfony

我尝试使用Symfony创建新的迁移:

$ php app/console doctrine:migrations:generate
Generated new migration class to "/path/to/project/app/DoctrineMigrations/Version20100621140655.php"

但我希望使用名称Version20100621140655_MyName.php创建迁移,而不是Version20100621140655.php。我怎么能这样做?

修改

链接主题:https://github.com/doctrine/migrations/issues/487

3 个答案:

答案 0 :(得分:2)

除了创建自己的命令之外,没有办法做到这一点。

您可以在the code中看到类名Version<version>,文件名显然必须与此相同。

使用$version = date('YmdHis')创建版本here

为了好处(文件和类名的后缀),我怀疑添加此功能是否值得。您可以随时轻松地更改命名空间,但是如果您想使用...

将其保留在应用程序命名空间中

应用程序/配置/ config_dev.yml

doctrine_migrations:
    ...
    namespace: Your\Migrations\Namespace

答案 1 :(得分:1)

重命名文件并更改班级名称:

class Version20100621140655_MyName extends AbstractMigration
{ 

//

编辑:似乎不起作用,Doctrine正在报告新的迁移但无法执行...

答案 2 :(得分:1)

由于我是通过谷歌搜索来到这里的,没有一个答案可以为我提供直接解决方案,因此我通过查看GitHub问题和Doctrine文档来弄清了它。

我尝试了来自COil的建议答案,但是由于if(paragraph.getNumChildren() != 0){ 表中的versions字段默认情况下设置为varchar(14),因此迁移后检查失败。由于名称很可能会长于该名称,因此大多数时候您都会遇到此错误。

解决方案是调整migration_versions文件并添加doctrine_migrations.yaml(在我的情况下为60)。

column_length: YOUR_PREFERRED_LENGTH

现在,您始终可以手动重命名迁移文件,并在该文件中相应地调整类名,例如调整为doctrine_migrations: ... column_length: 60

Version20100621140655_MyName.php