2016-10-06 2 views
1

Я использую учение с тонким V3, я хочу иметь функцию PostPersist/PostUpdatePostPersist в Учении Тонкий v3

это моя сущность

namespace App\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* 
* @ORM\Table(name="xxxx", indexes={@ORM\Index(name="xxxx", columns={"xxxx"})}) 
* @ORM\Entity 
* @ORM\HasLifecycleCallbacks() 
*/ 
class MyEntity 
{ 

.... 

/** 
* Set lastUpdate 
* 
* @param \DateTime $lastUpdate 
* 
* 
* @ORM\PostPersist() 
* @ORM\PostUpdate() 
*/ 
public function setLastUpdate($lastUpdate) 
{ 
    $this->last_update = new \DateTime('now'); 


    return $this; 
} 

Но когда я настойчив сущность, мое поле остается Null

ответ

1

Если вы хотите изменить значение базы данных, вы слушаете неправильное событие. Что касается до doc:

  • postPersist - Событие postPersist происходит для объекта после того, как объект был достигнут упорным. Он будет вызываться после базы данных операций вставки. Сгенерированные значения первичного ключа доступны в событии postPersist .
  • postUpdate - событие postUpdate происходит после операций обновления базы данных до данных сущности. Он не вызывается для оператора DQL UPDATE .

Так лучше вы справляетесь pre события вместо post события. В качестве примера:

/** 
* 
* @ORM\PrePersist() 
* @ORM\PreUpdate() 
*/ 
public function setLastUpdate() 
{ 
    $this->last_update = new \DateTime('now'); 


    return $this; 
} 

Надеется, что это поможет

+0

Совершенного Спасибо! – monkeyUser

Смежные вопросы