doctrine migrations phar,如何设置类型映射?

时间:2013-02-26 10:01:57

标签: doctrine-orm

我想在我的非symfony项目中使用doctrine迁移,所以我从https://github.com/doctrine/migrations获得了独立的phar。我正确配置了所有内容(db-configuration和configuration),然后在执行“migration:status”时出现错误:

  

[学说\ DBAL \ DBALException]
  请求未知的数据库类型枚举,   Doctrine \ DBAL \ Platforms \ MySqlPlatform可能不支持它。

现在有很多关于如何在symfony应用程序的上下文中解决这个问题的资源(例如http://wildlyinaccurate.com/doctrine-2-resolving-unknown-database-type-enum-requested)但是在这种情况下我可以在哪里放置这种类型的映射?我应该提取.phar,将代码放入其中(在哪里?)然后重新打包它? (工作原理)

3 个答案:

答案 0 :(得分:6)

我已经为Zend框架尝试了一些东西并且它起作用了:

打开./vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php 搜索功能initializeDoctrineTypeMappings() 为枚举创建一个条目,

'enum' => 'string'

像魅力一样工作!

答案 1 :(得分:0)

这个问题解决了这个问题 https://github.com/dyadyavasya/migrations

默认情况下,Doctrine不会将MySQL枚举类型映射到Doctrine类型。这是因为Enums包含state(它们允许的值)而Doctrine类型不包含。

在链接处使用fork,您可以注册MySQL ENUM以映射到Doctrine字符串。 这样,Doctrine总是将ENUM解析为Doctrine字符串。

migrations.yml

name: Doctrine Sandbox Migrations
migrations_namespace: DoctrineMigrations
table_name: doctrine_migration_versions
migrations_directory: /path/to/migrations/classes/DoctrineMigrations
mapping_types:
    enum: string

更多信息 - https://github.com/dyadyavasya/migrations#migrationsyml

答案 2 :(得分:-1)

Ocramius说:

您需要使用迁移并自行设置CLI。从克隆github.com/doctrine/migrations开始,然后通过composer进行安装。之后,根据自己的需要自定义CLI运行器以设置连接。