Symfony2,设置datetime字段的默认值

Clé*_*aud 2 php datetime symfony doctrine-orm

所以,我在我的实体中有一个这样的DateTime字段:

/**
     * @var \DateTime
     *
     * @ORM\Column(name="timestamp", type="datetime")
     */
    private $timestamp;
Run Code Online (Sandbox Code Playgroud)

每次我在我的数据库中插入一些东西,我这样做: $myEntity->setTimestamp(new \DateTime('now'));

所以,我想在我的实体中的字段上设置默认值,但是当我尝试时:

/**
 * @var \DateTime
 *
 * @ORM\Column(name="timestamp", type="datetime")
 */
private $timestamp = new \DateTime('now');
Run Code Online (Sandbox Code Playgroud)

更新后我的基地与doctrine:schema:update我有这个错误:PHP Parse error: syntax error, unexpected 'new' (T_NEW) in...

如何为此字段设置默认值?我每次使用我的实体时都不想setTimestamp ...谢谢!

Are*_*k S 9

你在构造函数中做到这一点.

public function __construct(){
    $this->timestamp(new \DateTime());
}
Run Code Online (Sandbox Code Playgroud)


adr*_*dev 5

LifecycleCallbacks方式:

<?php

use Doctrine\ORM\Mapping as ORM;

/**
 * Example
 *
 * @ORM\Table(name="examples")
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class Example
{

    // ...

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="create_at", type="datetime", nullable=false)
     */
    private $createdAt;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="updated_at", type="datetime", nullable=false)
     */
    private $updatedAt;

    // ...

    /**
     * Set createdAt
     *
     * @param \DateTime $createdAt
     * @ORM\PrePersist
     * @return Example
     */
    public function setCreatedAt()
    {

        if(!$this->createdAt){
            $this->createdAt = new \DateTime();
        }

        return $this;
    }

    // ...

    /**
     * Set updatedAt
     *
     * @param \DateTime $updatedAt
     * @ORM\PrePersist
     * @return Example
     */
    public function setUpdatedAt()
    {
        $this->updatedAt = new \DateTime();

        return $this;
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

注意@ORM\HasLifecycleCallbacks和@ORM\PrePersist的注释.详细信息:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#lifecycle-callbacks