Doctrine orm 请求了未知的数据库类型枚举,条令

Doctrine orm 请求了未知的数据库类型枚举,条令,doctrine-orm,zend-framework2,Doctrine Orm,Zend Framework2,当我想从数据库生成实体时,我有以下错误: Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it 我如何解决这个问题 提前感谢您可以尝试在module.php的onBootstrap模块中执行类似的操作,以告诉Dority将枚举视为字符串 $em = $e->getApplication()->getServiceManager()->get(

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

Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it
我如何解决这个问题


提前感谢

您可以尝试在module.php的onBootstrap模块中执行类似的操作,以告诉Dority将枚举视为字符串

$em = $e->getApplication()->getServiceManager()->get('Doctrine\ORM\EntityManager');
$platform = $em->getConnection()->getDatabasePlatform();
$platform->registerDoctrineTypeMapping('enum', 'string');

您可以尝试在module.php的onBootstrap模块中执行类似的操作,以告诉Doctrine将枚举视为字符串

$em = $e->getApplication()->getServiceManager()->get('Doctrine\ORM\EntityManager');
$platform = $em->getConnection()->getDatabasePlatform();
$platform->registerDoctrineTypeMapping('enum', 'string');

将以下行添加到bootstrap.php


将以下行添加到bootstrap.php


如果您真的想使用枚举,而不想将它们转换为字符串,那么您应该实现自定义类型,这其实没什么大不了的。 看

但是,您还必须扩展平台上的类型列表。 所以,最简单的方法是使用自己的方法覆盖无用的method\doctor\DBAL\Types\Type::getMappedDatabaseTypes,如下所示:

class EnumType extends Type
{
    const NAME = "enum";

    // ... (your implemented methods)

    public function getMappedDatabaseTypes(AbstractPlatform $platform)
    {
        return ['enum'];
    }
}

玩得开心:

如果你真的想使用枚举,而不是将它们转换成字符串,你应该实现你的自定义类型。这真的没什么大不了的。 看

但是,您还必须扩展平台上的类型列表。 所以,最简单的方法是使用自己的方法覆盖无用的method\doctor\DBAL\Types\Type::getMappedDatabaseTypes,如下所示:

class EnumType extends Type
{
    const NAME = "enum";

    // ... (your implemented methods)

    public function getMappedDatabaseTypes(AbstractPlatform $platform)
    {
        return ['enum'];
    }
}

有趣一点:

条令不会将枚举数据库类型映射到条令类型。无论如何,几乎没有解决办法。查看关于枚举的。条令不会将枚举数据库类型映射到条令类型。无论如何,几乎没有解决办法。查看有关枚举的详细信息。