如果它包含Datetime,则Doctrine结果会崩溃

时间:2015-12-03 10:08:36

标签: php mysql symfony datetime doctrine-orm

我正在使用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转换为字符串?

1 个答案:

答案 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)