/** * {@inheritDoc} */ public function value($data, $column = null, $null = true) { $value = parent::value($data, $column, $null); if ($column === 'uuid' && is_scalar($data) && $data === '') { return 'NULL'; } // CUSTOMIZE ADD 2014/07/02 ryuring // >>> switch ($column) { case 'date': case 'datetime': case 'timestamp': case 'time': // postgresql の場合、0000-00-00 00:00:00 を指定すると範囲外エラーとなる為 if ($data === '0000-00-00 00:00:00') { return "'" . date('Y-m-d H:i:s', 0) . "'"; } case 'integer': // TreeBehavior::getPath() にて、引数 $id に、null、または、空文字を指定した場合に、 // Model::id の初期値 false に上書きされてしまう仕様の為、SQLエラーが発生してしまう。 if ($data === false) { return 'NULL'; } } // <<< return $value; }
public function testSettings() { Configure::write('Cache.disable', true); $this->Dbo = ConnectionManager::getDataSource('test'); $this->skipIf(!$this->Dbo instanceof Postgres); $config2 = $this->Dbo->config; $config2['settings']['datestyle'] = 'sql, dmy'; ConnectionManager::create('test2', $config2); $dbo2 = new Postgres($config2, true); $expected = array(array('r' => date('d/m/Y'))); $r = $dbo2->fetchRow('SELECT now()::date AS "r"'); $this->assertEquals($expected, $r); $dbo2->execute('SET DATESTYLE TO ISO'); $dbo2->disconnect(); }
/** * _fixSequence * * @param Postgres $db */ protected function _fixSequence($db) { $sql = sprintf("\n\t\t\tSELECT setval(pg_get_serial_sequence('%s', 'id'), (SELECT MAX(id) FROM %s))", $this->table, $this->table); $db->execute($sql); }
/** * Constructor * @param $conn The database connection */ function __construct($conn) { parent::__construct($conn); }