从Phalcon模型中获取PHP中DateTime列的DateTime对象

从Phalcon模型中获取PHP中DateTime列的DateTime对象,php,database,datetime,model,phalcon,Php,Database,Datetime,Model,Phalcon,在数据库表中,有些列的类型为DATETIME。有什么方法可以让Phalcon模型在PHP中自动将它们从字符串转换为DateTime对象,反之亦然,而无需使用beforeSave()和afterFetch() 我试图使用注释@Column(type='datetime'),但数据仍然作为字符串返回。而@Column(type='boolean')对我来说很好 你能告诉我正确的方法吗?@1071;Сааааааааааааааа1072 或者您可以使用phalcon setter和getter(更简

在数据库表中,有些列的类型为
DATETIME
。有什么方法可以让Phalcon模型在PHP中自动将它们从字符串转换为
DateTime
对象,反之亦然,而无需使用
beforeSave()
afterFetch()

我试图使用注释
@Column(type='datetime')
,但数据仍然作为
字符串返回。而
@Column(type='boolean')
对我来说很好


你能告诉我正确的方法吗?

@1071;Сааааааааааааааа1072

或者您可以使用phalcon setter和getter(更简单的方法)

这是我理解的一个实施情况的例子

use\DateTime;
类Foo扩展\Phalcon\Mvc\Model
{
//将列属性设置为protected
受保护的日期;
//将在访问受保护的属性$date时调用
公共函数getDate()
{
//在此处添加验证以检查日期是否为空
返回新的日期时间($this->date?:'now');
}
//将在设置受保护属性$date时调用
公共函数setDate(DateTime$date=null)
{
//在此处添加验证以检查$date是否为空
如果(!是对象($date)){
$date=新的日期时间;
}
//这是mysql格式的时间戳
$this->date=$date->format('Y-m-dh:i:s');
退还$this;
}
}
//查找第一行
$foo=foo::findFirst();
//检查该行是否存在
如果($foo){
//$foo->date将返回getDate()
var_dump($foo->date);//DateTime对象
//这将调用setDate()
//列日期将DateTime对象转换为Y-m-d H:i:s格式
$foo->date=new DateTime('2019-09-28');//2019-09-28 00:00:00
$foo->save();
}

显然,您可以这样做:您对使用
beforeSave()
afterFetch()的厌恶是什么?我认为只有这样做,或者说模范行为才是唯一的方法。据我所知,Phalcon的内置功能无法触发此转换,您必须自己编写代码。如果您真的想变得有趣,可以将其添加到基本模型代码中,让它以编程方式查看模型的元数据,并将任何类型的“datettime”转换为DateTime对象。“boolean”和“string”是内置类型,这可能就是为什么boolean有效而DateTime无效的原因。