Symfony 2 Doctrine MS SQL Error


Symfony 2 Doctrine MS SQL Error

我已经开始从事Symfony 2.3项目,我需要将一个用经典Asp编写的金融网站转换为Php。

客户端有Ms Sql数据库,该数据库将与Symfony 2.3和条令一起使用,我已经创建了数据库,并从模式文件中加载了空表。

现在,每当我尝试从数据库(Ms Sql)生成实体时,我都会收到以下错误:

条令''DBAL''DBALE例外请求未知的数据库类型时间戳,Doctrine''DBAL''Platforms''SQLServer2008Platform可能不支持

有人知道如何解决这个问题吗?或者我应该怎么做才能避免这种情况?

请帮助我,因为我是Symfony 2.3的新手,谢谢

您可以在以下关于主题的条令文档中添加自己的类型:

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/mysql-enums.html

这与enum类型有关,但您可以将其与任何类型(如时间戳)一起使用,并将其链接到字符串类型或数据库支持的最适合您的任何其他类型。

src/My/Project/MyProjectBundle.php

public function boot()
{
    $em = $this->container->get('doctrine.orm.entity_manager');
    $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('timestamp','string');
}

通常,所有的时间戳类型都应该转换为字符串。

下面的配置适用于Synfony 3.2

1) 在config.yml中,将新类型添加到types下,并将其映射到mssql连接下

# Doctrine Configuration
doctrine:
    dbal:
        types:
            timestamp:  AppBundle'Type'Timestamp
..
..
        connections:
            mssql:
                driver:   sqlsrv
                host:     "%mssql_host%"
                port:     "%mssql_port%"
                dbname:   "%mssql_db_name%"
                user:     "%mssql_user%"
                password: "%mssql_password%"
                mapping_types:
                    timestamp: timestamp

2) 为以下url创建类AppBundle''Type''Timestamp:

https://github.com/mmerian/doctrine-timestamp/blob/master/lib/DoctrineTimestamp/DBAL/Types/Timestamp.php

3) 使用以下命令从数据库生成实体:

php-bin/console原则:映射:import--force-AppBundle xml--em=mssql-