我正在使用Symfony2.6,Doctrine和MySql数据库。
并且,如果以下查询的结果不为空,则Symfony会崩溃,并显示以下消息:“可捕获的致命错误: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试图将日期时间转换为字符串?
最佳答案
我会在这里猜测,因为没有足够的代码供我们证明可能出错的原因,所以我想这就是您正在做的事情。如果没有,请提供更多代码。
实体
/**
* @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)