Commit 4a552c88 by Qiang Xue

Fixes #1650: Added Connection::pdoClass.

parent fdca106e
...@@ -35,6 +35,7 @@ Yii Framework 2 Change Log ...@@ -35,6 +35,7 @@ Yii Framework 2 Change Log
- Enh #1634: Use masked CSRF tokens to prevent BREACH exploits (qiangxue) - Enh #1634: Use masked CSRF tokens to prevent BREACH exploits (qiangxue)
- Enh #1641: Added `BaseActiveRecord::updateAttributes()` (qiangxue) - Enh #1641: Added `BaseActiveRecord::updateAttributes()` (qiangxue)
- Enh #1646: Added postgresql `QueryBuilder::checkIntegrity` and `QueryBuilder::resetSequence` (Ragazzo) - Enh #1646: Added postgresql `QueryBuilder::checkIntegrity` and `QueryBuilder::resetSequence` (Ragazzo)
- Enh #1645: Added `Connection::$pdoClass` property (Ragazzo)
- Enh: Added `favicon.ico` and `robots.txt` to defauly application templates (samdark) - Enh: Added `favicon.ico` and `robots.txt` to defauly application templates (samdark)
- Enh: Added `Widget::autoIdPrefix` to support prefixing automatically generated widget IDs (qiangxue) - Enh: Added `Widget::autoIdPrefix` to support prefixing automatically generated widget IDs (qiangxue)
- Enh: Support for file aliases in console command 'message' (omnilight) - Enh: Support for file aliases in console command 'message' (omnilight)
......
...@@ -253,7 +253,10 @@ class Connection extends Component ...@@ -253,7 +253,10 @@ class Connection extends Component
* @var Schema the database schema * @var Schema the database schema
*/ */
private $_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. * Returns a value indicating whether the DB connection is established.
...@@ -338,13 +341,17 @@ class Connection extends Component ...@@ -338,13 +341,17 @@ class Connection extends Component
*/ */
protected function createPdoInstance() protected function createPdoInstance()
{ {
$pdoClass = 'PDO'; $pdoClass = $this->pdoClass;
if (($pos = strpos($this->dsn, ':')) !== false) { if ($pdoClass === null) {
$driver = strtolower(substr($this->dsn, 0, $pos)); $pdoClass = 'PDO';
if ($driver === 'mssql' || $driver === 'dblib' || $driver === 'sqlsrv') { if (($pos = strpos($this->dsn, ':')) !== false) {
$pdoClass = 'yii\db\mssql\PDO'; $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); return new $pdoClass($this->dsn, $this->username, $this->password, $this->attributes);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment