如何在symfony2中设置创建和更新日期?

时间:2015-02-09 05:51:30

标签: php symfony date doctrine-orm

我正在创建一个todo应用程序,用户可以在其中创建任务。用户可以选择插入标题,截止日期,已完成。我希望能够在用户创建任务时自动插入创建和更新的日期。

2 个答案:

答案 0 :(得分:9)

您可以在对象初始化时设置创建日期(在__construct() method中)并使用由LifeCycle回调管理的Doctrine2事件更新日期,这是一个示例:

<?php
namespace Acme\DemoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;


/**
 * @ORM\Entity()
 * @ORM\Table(name="task")
 * @ORM\HasLifecycleCallbacks
 */
class Task {

....

 /**
     * @ORM\Column(type="datetime")
     */
    protected $createdAt;

    /**
     * @ORM\Column(type="datetime")
     */
    protected $updatedAt;

...

    public function __construct()
    {
        $this->createdAt= new \DateTime();
        $this->updatedAt= new \DateTime();
    }

    /**
     * @ORM\PreUpdate()
     */
    public function preUpdate()
    {
        $this->updatedAt= new \DateTime();
    }

....

}

希望这个帮助

答案 1 :(得分:4)

更好的解决方案是从gedmo使用Doctrine的Timestampable扩展: https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/timestampable.md

此扩展程序使用lifecyclecallbacks,但它是一种更简洁的方法来设置创建和更新的时间戳。