Fixed a bug when saving a record with null valued boolean column
This commit is contained in:
parent
ba73772983
commit
6210a60611
@ -862,6 +862,11 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
|
||||
|
||||
foreach($array as $k => $v) {
|
||||
$type = $this->table->getTypeOf($v);
|
||||
|
||||
if($this->data[$v] === self::$null) {
|
||||
$a[$v] = null;
|
||||
continue;
|
||||
}
|
||||
|
||||
switch($type) {
|
||||
case 'array':
|
||||
@ -881,11 +886,7 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
|
||||
if($this->data[$v] instanceof Doctrine_Record)
|
||||
$this->data[$v] = $this->data[$v]->getIncremented();
|
||||
|
||||
|
||||
if($this->data[$v] === self::$null)
|
||||
$a[$v] = null;
|
||||
else
|
||||
$a[$v] = $this->data[$v];
|
||||
$a[$v] = $this->data[$v];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,28 +5,6 @@ class Doctrine_BooleanTestCase extends Doctrine_UnitTestCase {
|
||||
$this->tables = array("BooleanTest");
|
||||
parent::prepareTables();
|
||||
}
|
||||
|
||||
public function testSetNull() {
|
||||
$test = new BooleanTest();
|
||||
$this->is_working = null;
|
||||
|
||||
$this->assertEqual($this->is_working, null);
|
||||
$this->assertEqual($test->getState(), Doctrine_Record::STATE_TDIRTY);
|
||||
$test->save();
|
||||
|
||||
$test->refresh();
|
||||
$this->assertEqual($test->is_working, null);
|
||||
|
||||
$test = new BooleanTest();
|
||||
$this->is_working_notnull = null;
|
||||
|
||||
$this->assertEqual($this->is_working_notnull, false);
|
||||
$this->assertEqual($test->getState(), Doctrine_Record::STATE_TDIRTY);
|
||||
$test->save();
|
||||
|
||||
$test->refresh();
|
||||
$this->assertEqual($test->is_working_notnull, false);
|
||||
}
|
||||
|
||||
public function testSetFalse() {
|
||||
$test = new BooleanTest();
|
||||
@ -84,5 +62,27 @@ class Doctrine_BooleanTestCase extends Doctrine_UnitTestCase {
|
||||
$this->assertEqual(count($ret), 1);
|
||||
}
|
||||
|
||||
public function testSavingNullValue() {
|
||||
$test = new BooleanTest();
|
||||
$this->is_working = null;
|
||||
|
||||
$this->assertEqual($this->is_working, null);
|
||||
$this->assertEqual($test->getState(), Doctrine_Record::STATE_TDIRTY);
|
||||
$test->save();
|
||||
|
||||
$test->refresh();
|
||||
$this->assertEqual($test->is_working, null);
|
||||
|
||||
$test = new BooleanTest();
|
||||
$this->is_working_notnull = null;
|
||||
|
||||
$this->assertEqual($this->is_working_notnull, false);
|
||||
$this->assertEqual($test->getState(), Doctrine_Record::STATE_TDIRTY);
|
||||
$test->save();
|
||||
|
||||
$test->refresh();
|
||||
$this->assertEqual($test->is_working_notnull, false);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user