29

私は Symfony2 (または Symfony3) が初めてで、フィールドが「作成」または「変更」されたときにエンティティに自動的に保存するように (注釈構成を使用して) 教義を設定する方法が見つかりません。

4

5 に答える 5

44

ここで、この後の私の解決策...

これをエンティティクラスに直接入れるだけです:

/**
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class MyEntity {

   //....

    public function __construct() {
        // we set up "created"+"modified"
        $this->setCreated(new \DateTime());
        if ($this->getModified() == null) {
            $this->setModified(new \DateTime());
        }
    }

    /**
     * @ORM\PrePersist()
     * @ORM\PreUpdate()
     */
    public function updateModifiedDatetime() {
        // update the modified time
        $this->setModified(new \DateTime());
    }

    //....    
}

それは実際にうまくいく

于 2014-09-28T05:34:43.350 に答える
26

StofDoctrineExtensionsBundleを使用できます。これはsymfony cookbookで説明されています。タイムスタンプ可能な動作が含まれています。

/**
 * @var datetime $created
 *
 * @Gedmo\Timestampable(on="create")
 * @ORM\Column(type="datetime")
 */
private $created;

/**
 * @var datetime $updated
 *
 * @Gedmo\Timestampable(on="update")
 * @ORM\Column(type="datetime")
 */
private $updated;
于 2013-08-16T05:51:01.177 に答える