2012-08-31 105 views
1

我的教義實體有一個datetime屬性,名爲updated。這應該獲取當前時間每次(更改)的對象值寫入數據庫。我知道如何在MySql中做到這一點,但我正在尋找一個教條/ symfony解決方案。每次更改房產時更新「更新」屬性

有沒有辦法來

  1. 鉤到某個實例的INSERT/UPDATE之前被髮送到數據庫。
  2. updated屬性更新爲當前時間,並確保將其寫入數據庫而不觸發第二個UPDATE語句。

回答

1

你不需要任何擴展,只需使用Lifecycle Callbacks。 基本上,標誌着你的實體,它具有與HasLifecycleCallbacks註解配置的事件回調:

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\HasLifecycleCallbacks 
* ... 
*/ 
class MyEntityClass { 
... 

,然後標記實例方法將上發生的特定事件,例如運行以設置updated

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