【问题标题】:Symfony 3: Doctrine dateTime problems rowSymfony 3:Doctrine dateTime 问题行
【发布时间】:2017-07-27 19:15:06
【问题描述】:

我有一个带有列日期类型的 ORM\Entity。当我使用 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!

错误:

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

非常感谢!

【问题讨论】:

    标签: php datetime orm doctrine symfony


    【解决方案1】:

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

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

    不要使用 DateTime 对象设置“$date”字段,而是使用此类。 对 ID 上的请求执行相同的操作。

    【讨论】:

      【解决方案2】:

      这是完全不建议使用 DateTime 作为唯一 ID 的原因之一。

      另一种方法是设置主键为 String 类型,然后:

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

      参考https://stackoverflow.com/a/18874646/3062315

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 2011-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多