Mysql 如何让原则2以字符串形式返回日期时间?

Mysql 如何让原则2以字符串形式返回日期时间?,mysql,datetime,doctrine-orm,Mysql,Datetime,Doctrine Orm,我对原则2.5和日期时间字段有问题 我的数据库中有几个DateTime字段,在1.2条原则中从未遇到过任何问题 现在,我正在将我的应用程序升级到Doctrine 2.5,而QueryBuilder和DateTime字段有问题 我的问题是: $data = $em->createQueryBuilder() ->select('u.id, u.user_id, u.datecreate') ->from(self::CART_TABLE, 'u') -&g

我对原则2.5和日期时间字段有问题

我的数据库中有几个DateTime字段,在1.2条原则中从未遇到过任何问题

现在,我正在将我的应用程序升级到Doctrine 2.5,而QueryBuilder和DateTime字段有问题

我的问题是:

$data = $em->createQueryBuilder()
    ->select('u.id, u.user_id, u.datecreate')
    ->from(self::CART_TABLE, 'u')
    ->setMaxResults(1)
    ->getQuery()->getOneOrNullResult(HYDRATE_ARRAY);
结果如下:

Array
(
    [id] => 1
    [user_id] => 16
    [datecreate] => DateTime Object
        (
            [date] => 2015-03-06 20:02:26.000000
            [timezone_type] => 3
            [timezone] => America/Sao_Paulo
        )

)
原则1.2返回:

Array
(
    [id] => 1
    [user_id] => 16
    [datecreate] => 2015-03-13 18:22:35
)
实体中的变量声明为:

/**
 * @var \DateTime
 *
 * @ORM\Column(name="datecreate", type="datetime", nullable=true)
 */
private $datecreate;
如果我将“type=”datetime“更改为“type=”string”,它确实可以工作


我实际上需要返回一个字符串,而不是DateTime对象。我怎样才能做到这一点?更改实体是唯一的方法吗?

您可以更改方法,如

public function getDatecreate()
{
   return $this->datecreate->format('Y-m-d H:i:s');
}

我最终将所有的getter和setter都改为“string”而不是“\DateTime”,这就解决了我的问题。

更改实体的getter对我不起作用。除非我不得不在查询中做一些不同的事情,否则你的问题的答案是:改变实体是唯一的方法哦,伙计。。。好的,谢谢!这太奇怪了,我看到你的答案是其他人对其他类似问题的答案,而且对他们总是有效的。。。