2017-03-07 142 views
2

我有一个ORM \实体与列日期类型。当我使用的EntityManager选择对象更新我有这些错误:“开捕致命错误:类的DateTime的对象不能转换为字符串”Symfony 3:Doctrine 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! 

错误:

Catchable Fatal Error: Object of class DateTime could not be converted to string 

非常感谢!

回答

2

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

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

而不是使用DateTime对象设置“$ date”字段,请使用此类。 对您的ID请求做同样的事情。

0

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

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

$entity->setId(new \DateTime()->format('yyyy/mm/dd'));

https://stackoverflow.com/a/18874646/3062315,仅供参考!