我试图从MySQL数据库返回时间格式化字段列表,并使用Cake \ I18n \ Time类来操作它们。目前,当从数据库中获取数据时,当前日期将用于这些字段。我想在它们上设置我自己的日期(因为数据可以是多个日期),但我似乎无法找到一个优雅的解决方案。
到目前为止,我在测试期间的解决方案是使用Time::setTestNow($now)
设置日期,然后在我的实体中创建一个函数来正确设置日期,如下所示:
$newTime = new Time();
$newTime->hour($savedTime->format("H"))
->minute($savedTime->format("i"))
->second($savedTime->format("s"));
显然,这似乎是为这些字段设置日期的相当麻烦的方法。我的应用程序中还有其他函数需要比较日期和时间(日期可以从另一个表中获取)所以Time::setTestNow()
似乎是正确设置正确日期和设置日期的错误方法,每个新时间的月份和年份似乎也是一个麻烦的解决方案。
我是否可以使用其他方法设置从数据库中提取时间的日期?我宁愿在我的模型中拥有正确的时间,而不是每次我想使用它时都要转换它。)
感谢。
答案 0 :(得分:0)
我是否可以使用其他方法设置从数据库中提取时间的日期?
Entity Accessors.请参见virtual properties以实现此权利。摘自本书的例子:
class Article extends Entity
{
protected function _getTitle($title)
{
return ucwords($title);
}
}
只需在自定义的getter中连接日期和时间。
我有时间作为时间字段存储在数据库中,日期作为日期字段存储在另一个表中。我需要能够在时间上设置正确的日期,以便我可以与它们进行比较。
这听起来像是一个糟糕的设计。如果必须将它们分开,为什么不能将它们保存在保存的第三个字段中?但是,您可以在DB查询本身(Combining (concatenating) date and time into a datetime)中连接字段,并使用CakePHP ORMs类型映射将日期时间类型映射到它。也许你很幸运,它会自动将其检测为正确的类型。