mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-16 22:39:52 +08:00
Merge branch 'master' of github.com:yiisoft/yii2
* 'master' of github.com:yiisoft/yii2: Fixes #1115: fixed the issue with PDO boolean value binding with pgsql
This commit is contained in:
@@ -130,6 +130,28 @@ class Schema extends \yii\db\Schema
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the PDO type for the given PHP data value.
|
||||
* @param mixed $data the data whose PDO type is to be determined
|
||||
* @return integer the PDO type
|
||||
* @see http://www.php.net/manual/en/pdo.constants.php
|
||||
*/
|
||||
public function getPdoType($data)
|
||||
{
|
||||
// php type => PDO type
|
||||
static $typeMap = [
|
||||
// https://github.com/yiisoft/yii2/issues/1115
|
||||
// Cast boolean to integer values to work around problems with PDO casting false to string '' https://bugs.php.net/bug.php?id=33876
|
||||
'boolean' => \PDO::PARAM_INT,
|
||||
'integer' => \PDO::PARAM_INT,
|
||||
'string' => \PDO::PARAM_STR,
|
||||
'resource' => \PDO::PARAM_LOB,
|
||||
'NULL' => \PDO::PARAM_NULL,
|
||||
];
|
||||
$type = gettype($data);
|
||||
return isset($typeMap[$type]) ? $typeMap[$type] : \PDO::PARAM_STR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all table names in the database.
|
||||
* @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
|
||||
|
||||
@@ -11,14 +11,4 @@ use yiiunit\framework\db\ActiveRecordTest;
|
||||
class PostgreSQLActiveRecordTest extends ActiveRecordTest
|
||||
{
|
||||
protected $driverName = 'pgsql';
|
||||
|
||||
public function testBooleanAttribute()
|
||||
{
|
||||
$this->markTestSkipped('Storing boolean values does not work in PostgreSQL right now. See https://github.com/yiisoft/yii2/issues/1115 for details.');
|
||||
}
|
||||
|
||||
public function testStoreEmpty()
|
||||
{
|
||||
// as this test attempts to store data with invalid type it is okay for postgres to fail, skipping silently.
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user