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'];
}
}
有趣一点:条令不会将枚举数据库类型映射到条令类型。无论如何,几乎没有解决办法。查看关于枚举的。条令不会将枚举数据库类型映射到条令类型。无论如何,几乎没有解决办法。查看有关枚举的详细信息。