Doctrine 2:在DateTimeType.php中调用非对象的成员函数format()

Jie*_*eng 29 php doctrine doctrine-orm

我有一个DateTime领域:

/**
 * Date time posted
 * @Column(type="datetime")
 */
private $dtPosted;
Run Code Online (Sandbox Code Playgroud)

通过使用LifeCycleCallback将其设置为默认值

/**
 * @PrePersist
 */
function onPrePersist() {
    // set default date
    $this->dtPosted = date('Y-m-d H:m:s');
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

致命错误:在第46行的D:\ ResourceLibrary\Frameworks\Doctrine\lib\Doctrine\DBAL\Types\DateTimeType.php中的非对象上调用成员函数format()

rom*_*anb 60

date()函数返回一个字符串.该datetime类型适用于DateTime对象.因此要么将映射类型更改为string或使用DateTime对象.

  • 你是对的.我shld使用`date_create(date(...))`或`DateTime :: __ construct()` (11认同)

Med*_*nce 5

尝试使用带有@ORM\PrePersist注释的setCreated和带有@ORM\PrePersist和@ORM\PreUpdate方法注释的setUpdated,而不是prePersist和preUpdate方法......

/**
 * @ORM\PrePersist
 */
public function setCreated()
{
    $this->created = new \DateTime();
}

/**
 * @ORM\PrePersist
 * @ORM\PreUpdate
 */
public function setUpdated()
{
    $this->updated = new \DateTime();
}
Run Code Online (Sandbox Code Playgroud)