请求未知的数据库类型枚举,原则



当我想从数据库生成实体时,我会出现以下错误:

Unknown database type enum requested, DoctrineDBALPlatformsMySqlPlatform may not support it

我该如何解决这个问题。

提前感谢

您可以尝试在Module.phponBootstrap模块中执行类似操作,告诉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'];
    }
}

玩得开心:)

最新更新