如何在Symfony 2 /Doctrine中启用ENUM
运行时,我得到一个错误:doctrine:mapping:import
未知数据库类型枚举请求,Doctrine\DBAL\Platforms\MySqlPlatform 可能不支持它。
看来我需要设置一些方法。但是,所有文档和博客文章都引用了Symfony<1.4。在Symfony 2中有什么解决方案吗?use_native_enum
true
运行时,我得到一个错误:doctrine:mapping:import
未知数据库类型枚举请求,Doctrine\DBAL\Platforms\MySqlPlatform 可能不支持它。
看来我需要设置一些方法。但是,所有文档和博客文章都引用了Symfony<1.4。在Symfony 2中有什么解决方案吗?use_native_enum
true
对于 Symfony 2 项目,将其添加到以下部分中的 doctrine dbal 配置中:app/config.yml
doctrine:
dbal:
mapping_types:
enum: string
我的完整学说配置如下所示:
# Doctrine Configuration
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
set: string
varbinary: string
tinyblob: text
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
从这里改编的代码
然后运行:
app/console doctrine:schema:update --force --dump-sql --ansi
考虑到 Doctrine 说明书仅提供了有关如何使枚举解释为字符串的部分答案,因此无论 Doctrine 如何配置,以下内容都应该有效。
该错误指向文件的名称:.php - 在那里,您会发现默认列表嵌入在函数中,如下所示:Doctrine\DBAL\Platforms\MySqlPlatform
initializeDoctrineTypeMappings
$this->doctrineTypeMapping = array(
'tinyint' => 'boolean',
'smallint' => 'smallint',
'mediumint' => 'integer',
'int' => 'integer',
(...)
为所有 doctrine 用户添加简单的枚举支持,而不考虑设置的其余部分,只需通过以下方式扩展列表即可实现:
'enum' => 'string'