我已经开始从事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: AppBundleTypeTimestamp
..
..
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-