自动将DateTime对象解析为doctrine

时间:2016-06-15 18:02:54

标签: php doctrine-orm symfony

假设我获取了一些数组对象(通过getArrayResult()获取实体)并且它包含DateTime字段。如果我转储这个字段:

"createdAt": {
    "date": "2016-06-13 19:35:28.000000",
    "timezone_type": 100500,
    "timezone": "Some/Timezone"
}

我看到我没有正常(格式化好的)日期字符串,但是DateTime对象。当然,我可以写这样的东西来获得漂亮的格式字符串:

$result['createdAt'] = $result['createdAt']->format("Y-m-d H:i:s");

但是如果我需要获取,例如,10.000项(不确定这发生了:))然后执行for循环来更新每个createdAt字段......我认为至少丑陋的解决方案,所以也许这种情况有一些很好的解决方案或最佳实践?

2 个答案:

答案 0 :(得分:0)

我不明白为什么你的createdAt字段没有设置。它应该是nullable = false / NOT NULL在您的数据库中,这样您就不必检查。这是最好的做法。

我的意思是,它是在某个时刻创建的,但它没有创建于?这毫无意义:))

答案 1 :(得分:0)

您可以使用Symfony Serializer components将数组序列化为JSON,并使用DateTimeNormalizer格式化DateTime对象。

use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Serializer;

$encoders = array(new JsonEncoder());
$normalizers = array(new DateTimeNormalizer('Y-m-d H:i:s'));

$serializer = new Serializer($normalizers, $encoders);
$jsonResult = $serializer->serialize($result, 'json');