Php 如何删除symfony2中的日期时间错误?

Php 如何删除symfony2中的日期时间错误?,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我在symfony2中创建了一个实体,并将该实体设置为createddatetime和updateDateTime,但当我在控制器中使用setter时,会出现如下错误 FatalErrorException: Error: Call to a member function format() on a non-object in C:\wamp\www\QuickBacklog\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\DateTimeType.p

我在symfony2中创建了一个实体,并将该实体设置为createddatetime和updateDateTime,但当我在控制器中使用setter时,会出现如下错误

FatalErrorException: Error: Call to a member function format() on a non-object in C:\wamp\www\QuickBacklog\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\DateTimeType.php line 44
这是我的实体代码:

/**
     * Set createdDatetime
     *
     * @param \DateTime $createdDatetime
     * @return Sections
     */
    public function setCreatedDatetime($createdDatetime)
    {
        $this->createdDatetime = $createdDatetime;

        return $this;
    }

    /**
     * Get createdDatetime
     *
     * @return \DateTime 
     */
    public function getCreatedDatetime()
    {
        return $this->createdDatetime;
    }

    /**
     * Set updatedDatetime
     *
     * @param \DateTime $updatedDatetime
     * @return Sections
     */
    public function setUpdatedDatetime($updatedDatetime)
    {
        $this->updatedDatetime = $updatedDatetime;

        return $this;
    }

    /**
     * Get updatedDatetime
     *
     * @return \DateTime 
     */
    public function getUpdatedDatetime()
    {
        return $this->updatedDatetime;
    }
但当我在控制器上写的时候

$date=date('Y-m-d H:i:s');
$entity->setCreatedDatetime($date);
$entity->setUpdatedDatetime($date);
如何删除此错误会发生此错误?

updatedDatetime和createddatetime必须是DateTime类的对象

因此,控制器代码应类似于:

$date= new \DateTime();
$entity->setCreatedDatetime($date);
$entity->setUpdatedDatetime($date);

正如另一篇文章提到的,您的实体希望类型是DateTime,但我想了解一些额外的信息,但可以在将来帮助您

使用条令,您可以添加prePersist之类的事件,因此可以添加名为setDefaultCreatedDatetime的函数,该函数如下所示:

public function setDefaultCreatedDatetime()
{
    $this->setCreatedDatetime(new \DateTime());
}
然后,您可以添加:

lifecycleCallbacks:
    prePersist: [setDefaultCreatedDatetime]
你的教义实体。这将使您无需手动调用此方法

您还可以对setUpdatedTime执行相同的操作,并使用preUpdate事件