使用Cake \ I18n \ Time与MySQL时间字段

时间:2016-01-29 14:59:19

标签: php mysql date cakephp cakephp-3.0

我试图从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()似乎是正确设置正确日期和设置日期的错误方法,每个新时间的月份和年份似乎也是一个麻烦的解决方案。

我是否可以使用其他方法设置从数据库中提取时间的日期?我宁愿在我的模型中拥有正确的时间,而不是每次我想使用它时都要转换它。)

感谢。

1 个答案:

答案 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类型映射将日期时间类型映射到它。也许你很幸运,它会自动将其检测为正确的类型。