在我的项目中,我有一些带有createdAt列的实体。

//...
class Acme
{
    /**
     * @var DateTime
     *
     * @ORM\Column(name="created_at", type="datetime")
     */
    protected $createdAt;
}

我已经用Symfony序列化器启用了FOSRestBundle:
fos_rest:
    disable_csrf_role: ROLE_API
    param_fetcher_listener: true
    body_listener: true
    format_listener:
        rules:
            - { path: '/', fallback_format: json, prefer_extension: false }
    routing_loader:
        default_format: json
        include_format: false
    view:
        view_response_listener: force

我从AcmeRepository的datebase中进行选择:
public function methodName()
{
   $qb =  $this->createQueryBuilder('d');
   $s = $qb->select('d.createdAt']);

   return $s->getQuery()->getArrayResult();
}

结果,在我的 Controller 中:
$res = $em->getRepository('AppBundle:Acme')->methodName();
return $res;

它返回json,但我得到的不是[{"created_at": "2016-04-04 12:13:13"}]:
[{"created_at":{"timezone":{"name":"UTC","location":{"country_code":"??","latitude":0,"longitude":0,"comments":""}},"offset":0,"timestamp":1459769277}]

我该如何解决?

最佳答案

您可以使用正确的注释类型指定为FOS REST模块定义的类型的格式(请检查文档here)。例如:

use JMS\Serializer\Annotation\Type as JMS;

class Acme
{
    /**
     * @var DateTime
     *
     * @ORM\Column(name="created_at", type="datetime")
     * @JMS\Type("DateTime<'Y-m-d'>")
     */
    protected $createdAt;
}

希望这个帮助

关于php - Symfony 3-自动序列化DateTime对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36428688/

10-14 19:52
查看更多