mabuzagu / pdo-dblib-module
针对zf的MSSQL dbib模块
Requires
- php: >=5.5
- doctrine/doctrine-orm-module: ^1.0.0
This package is not auto-updated.
Last update: 2024-09-28 13:06:56 UTC
README
Zend的PDO DBlib模块
简介
Doctrine 2不支持在Linux机器上连接SQL Server的任何方法。这是一个支持PDO DBlib的简单驱动程序。许多测试失败,但大多数与PDODBlib驱动程序的不足有关。PHP仓库中有一个补丁来添加事务和lastInsertId支持,但此软件包有一些小的解决方案。
依赖关系
- pdo_dblib
- FreeTDS
- DoctrineModule
- DoctrineORMModule
对于Symphony Bundle:[PDODblibBundle] (https://github.com/trooney/PDODblibBundle) (最新master)
FreeTDS配置
DBLib需要FreeTDS。我们无法详细介绍FreeTDS的配置,但配置的连接应类似于以下内容
[mssql_freetds]
host = 172.30.252.25
port = 1433
tds version = 8.0
client charset = UTF-8
text size = 20971520
安装
使用composer
-
在您的composer.json中添加以下内容
"require": { "mabuzagu/pdo-dblib-module": "dev-master", }
-
现在运行以下命令让composer下载PDODblibModule
$ php composer.phar update
安装后
-
在您的
application.config.php
文件中启用它。<?php return [ 'modules' => [ // ... 'DoctrineModule', 'DoctrineORMModule', 'PDODblibModule', ], // ... ];
-
将其添加到您的autoload文件夹
<?php return [ 'doctrine' => [ 'connection' => [ 'orm_default' => [ 'driverClass' => PDODblibModule\Doctrine\DBAL\Driver\PDODblib\Driver::class, 'params' => [ 'host' => '<host>', 'port' => '<port>', 'user' => '<user>', 'password' => '<password>', 'dbname' => '<dbname>', ], ], ], ], ];
整合一切
整合一切并不容易。您需要完成以下步骤,通过适当的工具连接以检查每个安装是否成功
- 安装FreeTDS并配置服务器连接
- 验证使用./tsql -S mssql_freetds -U yourusername -P yourpassword
- 安装PHP DBLib扩展 -- 验证包含以下PHP脚本的脚本
- 验证 $pdo = new PDO('dblib:host=mssql_freetds;dbname=yourdb', 'yourusername', 'yourpassword');
- 安装和配置PDODblibBundle
- 验证对您的数据库执行某些SQL操作
注意 - PHP pdo_dblib补丁
您可以在SVN中找到一些pdo_dblib不足的补丁。
http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_dblib/dblib_driver.c?view=log
查看:修订号300647 - lastInsertId,修订号300628 - 事务支持
注意 - Doctrine测试套件
Doctrine2的测试套件不允许您动态添加数据库驱动程序。如果您想测试此软件包,请按如下修改Doctrine/DBAL/Driver/DriverManager::$_driverMap
final class DriverManager { private static $_driverMap = [ /* ... snip ... */ 'pdo_dblib' => Doctrine\DBAL\Driver\PDODblib\Driver::class, ]; }
注意 - 从数据库生成实体
这是可能的,但并不容易。以下是我所做的工作
- 将任何不兼容的列类型映射到字符串
- 修改Doctrine核心以跳过任何没有主键的表