我正在使用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)

09-11 19:46
查看更多