59

updated_atフィールドを作成created_atし、Doctrine エンティティで自動的に更新したいと考えています。

Ruby on Rails モデルには、 と の 2 つのフィールドがupdated_atありcreated_atます。

説明はここにあります: http://guides.rubyonrails.org/migrations.html#migration-overview :

タイムスタンプ マクロは、created_at と updated_at の 2 つの列を追加します。これらの特別な列は、存在する場合、Active Record によって自動的に管理されます。

Doctrine 2 で同様の機能を有効にすることはできますか?

4

5 に答える 5

83

これは、それらを個別に処理したい場合の別のオプションです。

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="person")
 * @ORM\HasLifecycleCallbacks
 */
class Person
{
    ..........

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

    /**
     * @var datetime $updated
     * 
     * @ORM\Column(type="datetime", nullable = true)
     */
    protected $updated;


    /**
     * Gets triggered only on insert

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

    /**
     * Gets triggered every time on update

     * @ORM\PreUpdate
     */
    public function onPreUpdate()
    {
        $this->updated = new \DateTime("now");
    }

    ..........
}
于 2015-04-21T10:53:59.517 に答える