mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-11 14:38:39 +00:00
fix datetime value bug
This commit is contained in:
parent
5d8577725a
commit
0ca13206fe
|
|
@ -915,7 +915,7 @@ class DataMapperAbstract implements DataMapperInterface
|
||||||
} elseif ($type === 'bool') {
|
} elseif ($type === 'bool') {
|
||||||
return (bool) $value;
|
return (bool) $value;
|
||||||
} elseif ($type === 'DateTime') {
|
} elseif ($type === 'DateTime') {
|
||||||
return $value->format('Y-m-d H:i:s');
|
return $value === null ? null : $value->format('Y-m-d H:i:s');
|
||||||
} elseif ($type === 'Json' || $type === 'jsonSerializable') {
|
} elseif ($type === 'Json' || $type === 'jsonSerializable') {
|
||||||
return (string) \json_encode($value);
|
return (string) \json_encode($value);
|
||||||
} elseif ($type === 'Serializable') {
|
} elseif ($type === 'Serializable') {
|
||||||
|
|
@ -2003,7 +2003,7 @@ class DataMapperAbstract implements DataMapperInterface
|
||||||
|
|
||||||
$refProp->setValue($obj, $value);
|
$refProp->setValue($obj, $value);
|
||||||
} elseif (static::$columns[$column]['type'] === 'DateTime') {
|
} elseif (static::$columns[$column]['type'] === 'DateTime') {
|
||||||
$value = new \DateTime($value ?? '');
|
$value = $value === null ? null : new \DateTime($value);
|
||||||
if ($hasPath) {
|
if ($hasPath) {
|
||||||
$value = ArrayUtils::setArray($arrayPath, $aValue, $value, '/', true);
|
$value = ArrayUtils::setArray($arrayPath, $aValue, $value, '/', true);
|
||||||
}
|
}
|
||||||
|
|
@ -2055,7 +2055,7 @@ class DataMapperAbstract implements DataMapperInterface
|
||||||
if (\in_array(static::$columns[$column]['type'], ['string', 'int', 'float', 'bool'])) {
|
if (\in_array(static::$columns[$column]['type'], ['string', 'int', 'float', 'bool'])) {
|
||||||
\settype($value, static::$columns[$column]['type']);
|
\settype($value, static::$columns[$column]['type']);
|
||||||
} elseif (static::$columns[$column]['type'] === 'DateTime') {
|
} elseif (static::$columns[$column]['type'] === 'DateTime') {
|
||||||
$value = new \DateTime($value ?? '');
|
$value = $value === null ? null : new \DateTime($value);
|
||||||
} elseif (static::$columns[$column]['type'] === 'Json') {
|
} elseif (static::$columns[$column]['type'] === 'Json') {
|
||||||
$value = \json_decode($value, true);
|
$value = \json_decode($value, true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'datetime' => new \DateTime('2005-10-11'),
|
'datetime' => new \DateTime('2005-10-11'),
|
||||||
|
'datetime_null' => null,
|
||||||
'ownsOneSelf' => [
|
'ownsOneSelf' => [
|
||||||
'id' => 0,
|
'id' => 0,
|
||||||
'string' => 'OwnsOne',
|
'string' => 'OwnsOne',
|
||||||
|
|
@ -88,6 +89,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
`test_base_json` varchar(254) DEFAULT NULL,
|
`test_base_json` varchar(254) DEFAULT NULL,
|
||||||
`test_base_json_serializable` varchar(254) DEFAULT NULL,
|
`test_base_json_serializable` varchar(254) DEFAULT NULL,
|
||||||
`test_base_datetime` datetime DEFAULT NULL,
|
`test_base_datetime` datetime DEFAULT NULL,
|
||||||
|
`test_base_datetime_null` datetime DEFAULT NULL, /* There was a bug where it returned the current date because new \DateTime(null) === current date which is wrong, we want null as value! */
|
||||||
PRIMARY KEY (`test_base_id`)
|
PRIMARY KEY (`test_base_id`)
|
||||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
|
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
|
||||||
)->execute();
|
)->execute();
|
||||||
|
|
@ -176,6 +178,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals($this->model->float, $modelR->float);
|
self::assertEquals($this->model->float, $modelR->float);
|
||||||
self::assertEquals($this->model->null, $modelR->null);
|
self::assertEquals($this->model->null, $modelR->null);
|
||||||
self::assertEquals($this->model->datetime->format('Y-m-d'), $modelR->datetime->format('Y-m-d'));
|
self::assertEquals($this->model->datetime->format('Y-m-d'), $modelR->datetime->format('Y-m-d'));
|
||||||
|
self::assertEquals(null, $modelR->datetime_null);
|
||||||
|
|
||||||
// todo implement these
|
// todo implement these
|
||||||
//self::assertEquals('123', $modelR->serializable);
|
//self::assertEquals('123', $modelR->serializable);
|
||||||
|
|
@ -207,6 +210,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals($this->modelArray['float'], $modelR['float']);
|
self::assertEquals($this->modelArray['float'], $modelR['float']);
|
||||||
self::assertEquals($this->modelArray['null'], $modelR['null']);
|
self::assertEquals($this->modelArray['null'], $modelR['null']);
|
||||||
self::assertEquals($this->modelArray['datetime']->format('Y-m-d'), $modelR['datetime']->format('Y-m-d'));
|
self::assertEquals($this->modelArray['datetime']->format('Y-m-d'), $modelR['datetime']->format('Y-m-d'));
|
||||||
|
self::assertEquals(null, $modelR['datetime_null']);
|
||||||
|
|
||||||
self::assertCount(2, $modelR['hasManyDirect']);
|
self::assertCount(2, $modelR['hasManyDirect']);
|
||||||
self::assertCount(2, $modelR['hasManyRelations']);
|
self::assertCount(2, $modelR['hasManyRelations']);
|
||||||
|
|
@ -232,6 +236,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
$modelR->float = 3.15;
|
$modelR->float = 3.15;
|
||||||
$modelR->null = null;
|
$modelR->null = null;
|
||||||
$modelR->datetime = new \DateTime('now');
|
$modelR->datetime = new \DateTime('now');
|
||||||
|
$modelR->datetime_null = null;
|
||||||
|
|
||||||
$id2 = BaseModelMapper::update($modelR);
|
$id2 = BaseModelMapper::update($modelR);
|
||||||
$modelR2 = BaseModelMapper::get($id2);
|
$modelR2 = BaseModelMapper::get($id2);
|
||||||
|
|
@ -242,6 +247,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals($modelR->float, $modelR2->float);
|
self::assertEquals($modelR->float, $modelR2->float);
|
||||||
self::assertEquals($modelR->null, $modelR2->null);
|
self::assertEquals($modelR->null, $modelR2->null);
|
||||||
self::assertEquals($modelR->datetime->format('Y-m-d'), $modelR2->datetime->format('Y-m-d'));
|
self::assertEquals($modelR->datetime->format('Y-m-d'), $modelR2->datetime->format('Y-m-d'));
|
||||||
|
self::assertEquals(null, $modelR2->datetime_null);
|
||||||
|
|
||||||
// todo test update relations
|
// todo test update relations
|
||||||
}
|
}
|
||||||
|
|
@ -257,6 +263,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
$modelR['float'] = 3.15;
|
$modelR['float'] = 3.15;
|
||||||
$modelR['null'] = null;
|
$modelR['null'] = null;
|
||||||
$modelR['datetime'] = new \DateTime('now');
|
$modelR['datetime'] = new \DateTime('now');
|
||||||
|
$modelR['datetime_null'] = null;
|
||||||
|
|
||||||
$id2 = BaseModelMapper::updateArray($modelR);
|
$id2 = BaseModelMapper::updateArray($modelR);
|
||||||
$modelR2 = BaseModelMapper::getArray($id2);
|
$modelR2 = BaseModelMapper::getArray($id2);
|
||||||
|
|
@ -267,6 +274,7 @@ class DataMapperAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals($modelR['float'], $modelR2['float']);
|
self::assertEquals($modelR['float'], $modelR2['float']);
|
||||||
self::assertEquals($modelR['null'], $modelR2['null']);
|
self::assertEquals($modelR['null'], $modelR2['null']);
|
||||||
self::assertEquals($modelR['datetime']->format('Y-m-d'), $modelR2['datetime']->format('Y-m-d'));
|
self::assertEquals($modelR['datetime']->format('Y-m-d'), $modelR2['datetime']->format('Y-m-d'));
|
||||||
|
self::assertEquals(null, $modelR2['datetime_null']);
|
||||||
|
|
||||||
// todo test update relations
|
// todo test update relations
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ class BaseModel
|
||||||
|
|
||||||
public $datetime = null;
|
public $datetime = null;
|
||||||
|
|
||||||
|
public $datetime_null = null;
|
||||||
|
|
||||||
public $hasManyDirect = [];
|
public $hasManyDirect = [];
|
||||||
|
|
||||||
public $hasManyRelations = [];
|
public $hasManyRelations = [];
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ class BaseModelMapper extends DataMapperAbstract
|
||||||
'test_base_json' => ['name' => 'test_base_json', 'type' => 'Json', 'internal' => 'json'],
|
'test_base_json' => ['name' => 'test_base_json', 'type' => 'Json', 'internal' => 'json'],
|
||||||
'test_base_json_serializable' => ['name' => 'test_base_json_serializable', 'type' => 'Json', 'internal' => 'jsonSerializable'],
|
'test_base_json_serializable' => ['name' => 'test_base_json_serializable', 'type' => 'Json', 'internal' => 'jsonSerializable'],
|
||||||
'test_base_datetime' => ['name' => 'test_base_datetime', 'type' => 'DateTime', 'internal' => 'datetime'],
|
'test_base_datetime' => ['name' => 'test_base_datetime', 'type' => 'DateTime', 'internal' => 'datetime'],
|
||||||
|
'test_base_datetime_null' => ['name' => 'test_base_datetime_null', 'type' => 'DateTime', 'internal' => 'datetime_null'],
|
||||||
'test_base_owns_one_self' => ['name' => 'test_base_owns_one_self', 'type' => 'int', 'internal' => 'ownsOneSelf'],
|
'test_base_owns_one_self' => ['name' => 'test_base_owns_one_self', 'type' => 'int', 'internal' => 'ownsOneSelf'],
|
||||||
'test_base_belongs_to_one' => ['name' => 'test_base_belongs_to_one', 'type' => 'int', 'internal' => 'belongsToOne'],
|
'test_base_belongs_to_one' => ['name' => 'test_base_belongs_to_one', 'type' => 'int', 'internal' => 'belongsToOne'],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user