Php Symfony 3:条令日期时间问题行

Php Symfony 3:条令日期时间问题行,php,datetime,orm,doctrine,symfony,Php,Datetime,Orm,Doctrine,Symfony,我有一个列日期类型为的ORM\实体。使用EntityManager选择要更新的对象时,出现以下错误:“可捕获致命错误:DateTime类的对象无法转换为字符串” 专栏: /** * @ORM\Id * @ORM\Column(name="date", type="date") */ private $date; 以及查询: $query = $em->createQuery('SELECT t FROM AppBundle:Table t WHERE t.id = :t_id')-

我有一个列日期类型为的ORM\实体。使用EntityManager选择要更新的对象时,出现以下错误:“可捕获致命错误:DateTime类的对象无法转换为字符串”

专栏:

/**
 * @ORM\Id
 * @ORM\Column(name="date", type="date")
 */
private $date;
以及查询:

$query = $em->createQuery('SELECT t FROM AppBundle:Table t WHERE t.id = :t_id')->setParameter('t_id', $tId);
$result = $query->getResult(); // <- ¡ERROR IS HERE!

非常感谢

日期/日期时间不能用作条令的唯一ID,因为它需要一个_toString()方法。您可以创建此类:

class DoctrineDateTime extends DateTime
{
    public function __toString()
    {
        return $this->format('U');
    }
}
使用此类,而不是使用DateTime对象设置“$date”字段。
对ID上的请求执行相同的操作。

这就是为什么不建议使用DateTime作为唯一ID的原因之一

另一种方法是使用设置字符串类型的主键,然后执行以下操作:

$entity->setId(新的\DateTime()->格式('yyyy/mm/dd')

请参阅以供参考

class DoctrineDateTime extends DateTime
{
    public function __toString()
    {
        return $this->format('U');
    }
}