Fixes #1650: Added Connection::pdoClass.

This commit is contained in:
Qiang Xue
2013-12-27 16:01:39 -05:00
parent fdca106ece
commit 4a552c88cf
2 changed files with 14 additions and 6 deletions

View File

@ -253,7 +253,10 @@ class Connection extends Component
* @var Schema the database schema
*/
private $_schema;
/**
* @var string Custom PDO wrapper class. If not set, it will use "PDO" or "yii\db\mssql\PDO" when MSSQL is used.
*/
public $pdoClass;
/**
* Returns a value indicating whether the DB connection is established.
@ -338,13 +341,17 @@ class Connection extends Component
*/
protected function createPdoInstance()
{
$pdoClass = 'PDO';
if (($pos = strpos($this->dsn, ':')) !== false) {
$driver = strtolower(substr($this->dsn, 0, $pos));
if ($driver === 'mssql' || $driver === 'dblib' || $driver === 'sqlsrv') {
$pdoClass = 'yii\db\mssql\PDO';
$pdoClass = $this->pdoClass;
if ($pdoClass === null) {
$pdoClass = 'PDO';
if (($pos = strpos($this->dsn, ':')) !== false) {
$driver = strtolower(substr($this->dsn, 0, $pos));
if ($driver === 'mssql' || $driver === 'dblib' || $driver === 'sqlsrv') {
$pdoClass = 'yii\db\mssql\PDO';
}
}
}
return new $pdoClass($this->dsn, $this->username, $this->password, $this->attributes);
}