mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-17 14:57:23 +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.
|
* 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.
|
* @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
|
class PostgreSQLActiveRecordTest extends ActiveRecordTest
|
||||||
{
|
{
|
||||||
protected $driverName = 'pgsql';
|
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