在cli-config.php中使用ENUM

时间:2019-06-04 01:57:46

标签: php doctrine-orm doctrine

我是新手,请耐心等待。

当我尝试运行vendor/bin/doctrine orm:schema-tool:drop --force时,出现以下错误消息:

  

请求了未知的数据库类型枚举,Doctrine \ DBAL \ Platforms \ MySQL57Platform可能不支持。

是的,是的,我知道,我已经读过很多关于this one的话题。

我的问题是,我希望它像文档中那样在bootstrap.php的{​​{1}}中完成。

这是我的代码:

cli-config.php

我试图将这一行添加到参数中:

    $isDevMode = true;
    $paths = [APP_DIR . 'classes/Entities'];
    $dbParams = [
        'driver'        => 'pdo_mysql',
        'user'          => Config::DB_USER,
        'password'      => Config::DB_PASSWORD,
        'dbname'        => Config::DB_DATABASE
    ];
    $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
    return \Doctrine\ORM\EntityManager::create($dbParams, $config);

但是文档清楚地说明了参数中可以包含哪些选项。

我无法更改数据库。这不是一个symfony项目。

有人有主意吗?

1 个答案:

答案 0 :(得分:0)

好的,这可能是一个解决方案。

基于this post,我已经更改了代码,如下所示:

...
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);

$entityManager = \Doctrine\ORM\EntityManager::create($dbParams, $config);
$conn = $entityManager->getConnection();
$sqlSchemaManager = new SQLServerSchemaManager($conn);
$sqlSchemaManager->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
return $entityManager;