不使用指定配置的Doctrine迁移

时间:2014-02-01 14:27:44

标签: doctrine-orm doctrine zend-framework2 doctrine-migrations

我在ZF2项目中使用了Doctrine和Migrations几个星期没有问题。我一直在通过指定自己的配置文件来执行迁移:

vendor/bin/doctrine-module migrations:diff --configuration=/path/to/migrations-config.xml

我最近通过作曲家将Codeception引入我的项目中,当我最近执行新的迁移(使用相同的上述命令)时,我收到以下错误:

[InvalidArgumentException]
Migrations directory data/DoctrineORMModule/Migrations does not exist

这不是我在配置文件中指定的目录。起初我以为Doctrine Migrations完全忽略了我的--configuration参数。当我追踪它时,我看到Doctrine Migrations没有使用我的--configuration参数,因为它已经加载了一个配置文件。

有谁知道这个配置文件可能从哪里拉?我可以通过在AbstractCommand getMigrationConfiguration()中注释掉条件来暂时解决这个问题,但从长远来看,我宁愿不必依赖于此。我也会尝试删除代码,看看是否有任何影响。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:7)

事实证明,我能够将Doctrine迁移配置移动到我的ZF2模块配置中。在我的module.config.php中,我指定了以下内容(Api是模块名称):

'doctrine' => array(
        'driver' => array(
            'application_entities' => array(
                'class' =>'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(__DIR__ . '/../src/Api/Entity')
            ),
            'orm_default' => array(
                'drivers' => array(
                    'Api\Entity' => 'application_entities'
                )
            )
        ),
        'migrations_configuration' => array(
            'orm_default' => array(
                'directory' => 'data/migrations',
                'namespace' => 'My\Namespace\Migrations',
                'table' => 'migrations',
            ),  
        ),
    ),

这使我可以运行Doctrine迁移命令,而无需指定配置文件,例如:

vendor/bin/doctrine-module migrations:diff

答案 1 :(得分:1)

我在使用独立doctrine-migration.phar命令时看到了另一种选择:

php doctrine-migrations.phar migrations:migrate --configuration=config.xml --db-configuration=db-config.xml

要完成这项工作,您需要从此处下载doctrine-migrations.pharhttps://github.com/doctrine/migrations