2012-05-26 64 views
1

我目前正在将遗留应用程序迁移到symfony2的过程中,问题是我有很多mysql枚举列,我知道该教义不支持枚举数据类型,并且一种解决方法是将其存储为字符串但是我真的失去了正确排序数据的能力,因为varchars慢很多,我有很多使用enum数据类型的表,并且修改模式会非常困难,我的选择是什么?你能提出什么建议可以让symfony2过渡更顺畅?使用symfony2将mysql枚举迁移到教义实体的最佳策略是什么?

回答

1

你有两个解决方案

  • 解决方案1:映射到VARCHAR处理
  • 解决方案2:定义类型

的更多信息请访问以下链接:Mysql Enums doctrine

+0

解决方案1是不可能的,因为它会让数据库变慢很多。解决方案2,我将不得不为每个独特的枚举创建许多类,是否有一种方法可以为枚举创建一个类型类并将实参定义中需要的选项作为参数传递? – MikeGA

+0

我不认为现在有任何其他解决方案:( –

+0

那么,当然会在我的计划中抛出一个湿毯子!我可能最终会用解决方案2,但这将是一个缓慢的过程,谢谢a.aitboudad! – MikeGA

2

试试这个对我有用

http://symfony.com/doc/current/reference/configuration/doctrine.html#reference-dbal-configuration

在app /配置/ config.yml文件

添加

mapping_types: 
     enum: string 

e.g下面

doctrine: 
dbal: 
    driver: %database_driver% 
    host:  %database_host% 
    port:  %database_port% 
    dbname: %database_name% 
    user:  %database_user% 
    password: %database_password% 
    charset: UTF8 
    mapping_types: 
     enum: string 

那么你可以使用例如

@ORM\Column(type="string", columnDefinition="ENUM('A', 'B')") 
相关问题