当我想从数据库生成实体时,我会出现以下错误:
Unknown database type enum requested, DoctrineDBALPlatformsMySqlPlatform may not support it
我该如何解决这个问题。
提前感谢
您可以尝试在Module.php
的onBootstrap
模块中执行类似操作,告诉Doctrine将您的enum
视为字符串
$em = $e->getApplication()->getServiceManager()->get('DoctrineORMEntityManager');
$platform = $em->getConnection()->getDatabasePlatform();
$platform->registerDoctrineTypeMapping('enum', 'string');
将以下行添加到bootstrap.php
$entityManager->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
如果您真的想使用枚举并且不将它们转换为字符串,那么您应该实现您的自定义类型(这真的没什么大不了的)。请参阅此处输入链接描述
但是,您还必须扩展平台上的类型列表。所以,最简单的方法是用自己的方法覆盖无用的方法\DDoctrine\DBAL\Types\Type::getMappedDatabaseTypes,就像一样
class EnumType extends Type
{
const NAME = "enum";
// ... (your implemented methods)
public function getMappedDatabaseTypes(AbstractPlatform $platform)
{
return ['enum'];
}
}
玩得开心:)