Php 使用symfony2将mysql枚举迁移到条令实体的最佳策略?

Php 使用symfony2将mysql枚举迁移到条令实体的最佳策略?,php,symfony,doctrine,Php,Symfony,Doctrine,我目前正在将一个遗留应用程序迁移到symfony2,问题是我有很多mysql enum列,我知道Dority不支持enum数据类型,一个解决方法是将其存储为字符串,但我真的会失去正确排序数据的能力,因为varchars的速度要慢得多,我有很多带有枚举数据类型的表,修改模式非常困难,我的选择是什么??您有什么建议可以使到symfony2的过渡更加顺利?您有两种解决方案 解决方案1:映射到Varchars 解决方案2:定义类型 有关更多信息,请参阅此链接:您有两种解决方案 解决方案1:映射到V

我目前正在将一个遗留应用程序迁移到symfony2,问题是我有很多mysql enum列,我知道Dority不支持enum数据类型,一个解决方法是将其存储为字符串,但我真的会失去正确排序数据的能力,因为varchars的速度要慢得多,我有很多带有枚举数据类型的表,修改模式非常困难,我的选择是什么??您有什么建议可以使到symfony2的过渡更加顺利?

您有两种解决方案

  • 解决方案1:映射到Varchars
  • 解决方案2:定义类型
有关更多信息,请参阅此链接:

您有两种解决方案

  • 解决方案1:映射到Varchars
  • 解决方案2:定义类型

有关更多信息,请参阅此链接:

试试这个,它对我有用

在app/config/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')")

试试这个它对我有用

在app/config/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')")

解决方案1是不可能的,因为它会使数据库速度慢得多。解决方案2,我必须为每个唯一的枚举创建多个类,是否有办法只为枚举创建一个类型类,并将实体定义中所需的选项作为参数传递?我认为目前没有其他解决方案:(好吧,这肯定会给我的计划泼上一盆冷水!我可能最终会使用解决方案2,但这将是一个缓慢的过程,谢谢你a.aitboudad!解决方案1是不可能的,因为它会使数据库的速度慢很多。解决方案2,我必须为每个唯一的枚举创建许多类,有没有办法只为枚举并将实体定义中所需的选项作为参数传递??我认为目前没有任何其他解决方案:(好吧,这肯定会给我的计划泼上一盆冷水!我可能最终选择解决方案2,但这将是一个缓慢的过程,谢谢你a!