我对教义 2.5 和日期时间字段有问题。
我的数据库中有几个日期时间字段,并且在原则 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
*
* @ORMColumn(name="datecreate", type="datetime", nullable=true)
*/
private $datecreate;
如果我将"类型="日期时间"更改为"类型="字符串",它确实有效。
我实际上需要返回是一个字符串而不是 DateTime 对象。我怎样才能做到这一点?更改实体是唯一的方法吗?
你可以改变方法,比如
public function getDatecreate()
{
return $this->datecreate->format('Y-m-d H:i:s');
}
我最终将所有 getter 和 setter 更改为"string"而不是"\DateTime",这解决了我的问题。