我的教義實體有一個datetime
屬性,名爲updated
。這應該獲取當前時間每次(更改)的對象值寫入數據庫。我知道如何在MySql中做到這一點,但我正在尋找一個教條/ symfony解決方案。每次更改房產時更新「更新」屬性
有沒有辦法來
- 鉤到某個實例的INSERT/UPDATE之前被髮送到數據庫。
- 將
updated
屬性更新爲當前時間,並確保將其寫入數據庫而不觸發第二個UPDATE語句。
我的教義實體有一個datetime
屬性,名爲updated
。這應該獲取當前時間每次(更改)的對象值寫入數據庫。我知道如何在MySql中做到這一點,但我正在尋找一個教條/ symfony解決方案。每次更改房產時更新「更新」屬性
有沒有辦法來
updated
屬性更新爲當前時間,並確保將其寫入數據庫而不觸發第二個UPDATE語句。你不需要任何擴展,只需使用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();
}
...
查看DoctrineExtensions的Timestampable behavior。有StofDoctrineExtensionsBundle將其整合到Symfony中。
謝謝,這看起來很有保證。 – BetaRide