我正在使用Symfony2.6,Doctrine和MySql数据库。 如果以下查询的结果不为空,Symfony将与消息崩溃:" Catchable Fatal Error:类DateTime的对象无法转换为字符串"。 数据库字段时间戳是日期时间。
$query = "SELECT a
FROM TestBundle:Test a
where a.test = :test
and a.timestamp >= :from
and a.timestamp <= :to
order by a.timestamp";
$query = $em ->createQuery($query)
->setParameter('test', $test)
->setParameter('from', $formdata['from'])
->setParameter('to', $formdata['to']);
$result = $query->getResult();
为什么symfony试图将datetime转换为字符串?
答案 0 :(得分:0)
我会在这里猜测,因为没有足够的代码可以证明错误是正确的,所以我想这就是你正在做的事情。如果没有,请提供更多代码。
<强> ENTITY 强>
/**
* @var DateTime
*/
$protected $timestamp;
/**
* @return DateTime
*/
public function getTimestamp()
{
return $this->timestamp;
}
您可能会做什么
echo $a->getTimestamp()
你应该做什么
echo $a->getTimestamp()->format('Y-m-d H:i:s')
示例强>
echo 'CREATING A DATETIME STRING FROM A DATETIME OBJECT';
echo '<br />';
$objectDatetime = new DateTime();
$stringDatetime = $objectDatetime->format('Y-m-d H:i:s');
echo $stringDatetime;
echo '<hr />';
echo 'CREATING A DATETIME OBJECT FROM A DATETIME STRING';
echo '<br />';
$objectDatetime2 = new DateTime($stringDatetime);
$stringDatetime2 = $objectDatetime2->format('Y-m-d H:i:s');
echo $stringDatetime2;
<强>更新强>
我也会做类似下面的事情。虽然开放进行改进,但只是给你一个想法。
->setParameter('from', (trim($formdata['from'])) ? new \DateTime($formdata['from']) : null)