Php 如何在Symfony 2/Doctrine中启用枚举
运行Php 如何在Symfony 2/Doctrine中启用枚举,php,mysql,symfony,doctrine,Php,Mysql,Symfony,Doctrine,运行doctrine:mapping:import时,我得到一个错误: 请求的未知数据库类型enum,条令\DBAL\Platforms\MySqlPlatform可能不支持它 似乎我需要将use_native\u enum设置为true某种方式。但是,所有文档和博客帖子都引用SymfonydoctrineTypeMapping=array( 'tinyint'=>'boolean', “smallint”=>“smallint”, 'mediumint'=>'integer', 'int'=>
doctrine:mapping:import
时,我得到一个错误:
请求的未知数据库类型enum,条令\DBAL\Platforms\MySqlPlatform可能不支持它
似乎我需要将
use_native\u enum
设置为true
某种方式。但是,所有文档和博客帖子都引用Symfony<1.4。Symfony 2中有什么解决方案吗 对于Symfony 2项目,将其添加到app/config.yml
中的原则dbal配置中:
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原则:schema:update--force--dump sql--ansi
考虑到原则手册仅提供了如何将枚举解释为字符串的部分答案,无论原则是如何配置的,以下内容都应该起作用
错误指向文件名:Doctrine\DBAL\Platforms\MySqlPlatform
.php-在那里,您会发现默认列表嵌入在函数InitializedActineTypeMappings
中,如下所示:
$this->doctrineTypeMapping=array(
'tinyint'=>'boolean',
“smallint”=>“smallint”,
'mediumint'=>'integer',
'int'=>'integer',
(...)
为所有条令用户添加简单的枚举支持,不管设置的其余部分如何,只需通过扩展列表来实现:
'enum' => 'string'
是的,这是可行的,但问题是,我猜它会从数据库中删除所有枚举类型,当您执行“php应用程序/控制台原则:模式:更新-强制”时,在Symfony 4应用程序中遇到了这个问题,使用
原则:迁移:diff
,这个答案仍然对其进行排序:-)发生在我身上的奇怪事情是,包含enum
的迁移已成功迁移,但此后我无法迁移任何迁移!我将运行此命令php-bin/console-make:migration
,但它显示的错误如下:请求的未知数据库类型enum,Doctrine\DBAL\Platforms\MySQL57Platform可能不支持它。对我来说效果很好,谢谢Mate我想你会在cookbook的文章中找到你问题的答案。但是当原则:映射:导入
启动时,把这段代码放在哪里运行呢?有点晚了,但我认为我的答案对你来说是正确的@umpirsky从“第三方”更改代码是个坏主意。当您想要更新此代码(您想要:新功能、安全性等)时,您所做的更改也将被替换。