mabuzagu/pdo-dblib-module

此软件包最新版本(dev-master)没有可用的许可信息。

针对zf的MSSQL dbib模块

dev-master 2016-10-13 10:52 UTC

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支持,但此软件包有一些小的解决方案。

依赖关系

对于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

  1. 在您的composer.json中添加以下内容

    "require": {
        "mabuzagu/pdo-dblib-module": "dev-master",
    }
  2. 现在运行以下命令让composer下载PDODblibModule

    $ php composer.phar update

安装后

  1. 在您的application.config.php文件中启用它。

    <?php
    return [
        'modules' => [
            // ...
            'DoctrineModule',
            'DoctrineORMModule',
    		'PDODblibModule',
        ],
        // ...
    ];
  2. 将其添加到您的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核心以跳过任何没有主键的表