To automatically typecast your value into specific format use DataEntity getters, setters and accessors.
ORM engine can automatically associate setter, getter or accessor to your entity fields based on database type, check schemas/records config to locate such mapping:
'mutators' => [
'timestamp' => ['accessor' => Accessors\SqlTimestamp::class],
'datetime' => ['accessor' => Accessors\SqlTimestamp::class],
'php:int' => ['setter' => 'intval', 'getter' => 'intval'],
'php:float' => ['setter' => 'floatval', 'getter' => 'floatval'],
'php:string' => ['setter' => 'strval'],
'php:bool' => ['setter' => 'boolval', 'getter' => 'boolval'],
/*{{mutators}}*/
],
To associate filter with entity value use constants SETTERS and GETTERS:
const SETTERS = [
'name' => 'ucfirst'
];
ORM includes pre-defined accessor to help you manage datetime fields with respect of database timezone:
const SCHEMA = [
'id' => 'primary',
'time_registered' => 'datetime',
'name' => 'string(64)',
'email' => 'string',
'status' => 'enum(active,blocked)',
'balance' => 'decimal(10,2)'
];
protected function indexAction()
{
$user = new User();
$user->name = 'New Name';
$user->time_registered->setDateTime(2015, 1, 1, 12, 0, 0);
dump($user->time_registered);
$user->save();
}
You can also simply assign the time to a time_registered field. An accessor must automatically handle it using strtotime function:
$user->time_registered = 'next friday 10am';
DateTime will be automatically converted into DB specific timezone (UTC by default).