Обратные вызовы жизненных циклов, по-видимому, не выполняются при сохранении - PullRequest
1 голос
/ 29 января 2012

Внутри класса сущности:

/** @Entity @HasLifecycleCallbacks */ 
 class Job {

    /** @PrePersist */    
    public function setCreatedAtOnCreate()
    {
      //some code
    }

    /** @PrePersist */
    public function setExpiresAtOnCreate()
    { 
      //some code
    }

При обновлении данных базы данных с помощью команды doctrine: fixtures: load выдает ошибку:

Столбец создан_ не может быть пустым.1008 *

Может ли кто-нибудь помочь?Чего мне не хватает?

1 Ответ

4 голосов
/ 29 января 2012

После определения функции обратного вызова вы должны указать эти две функции в качестве параметров lifecycleCallbacks: в файле yaml соответствующей сущности.Если вы используете XML, укажите там.Ниже приведен пример того, как обратный вызов жизненного цикла работает с использованием yaml.

class myentity{

private $createdAt ;
private $updatedAt ;
public function setCreatedAtValue()
    {
      $this->createdAt = new \DateTime();
    }

    public function setUpdatedAtValue()
    {
        $this->updatedAt = new \DateTime();
    }
}

В вашем файле Yaml, соответствующем этой сущности, вы должны вызывать эти 2 функции в обратном вызове жизненного цикла,

Myproject\MytBundle\Entity\myentity:
  type: entity
  table: myentity
  fields:
    id:
      id: true
      type: integer
      unsigned: false
      nullable: false
      generator:
        strategy: IDENTITY
  lifecycleCallbacks:
    prePersist: [ setCreatedAtValue,setUpdatedAtValue ]
    preUpdate: [ setUpdatedAtValue ]

Thisобратный вызов будет вызываться перед вставкой данных в БД, а функция setUpdatedAtValue будет вызываться перед обновлением любого значения в Db

. Надеюсь, это поможет вам.Удачного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...