Wpis z mikrobloga

Cześć.
Załóżmy, że mam encję Post, która reprezentuje post na blogu. W bazie mam już kilka rekordów, ale po jakimś czasie chciałbym dodać createdAt i updatedAt za pomocą StofDoctrineExtensionsBundle i Timestampable.
Dodaję traita do encji i robię migrację. No i przy migrowaniu zmian mam błąd:

SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1


Problem jest z tym, że istnieją rekordy w tabeli. Teraz mogę bez problemu dropnąć bazę i puścić migracje + fixtures ponownie, ale co w przypadku produkcji? Da się ustawić jakaś defaultową wartość dla istniejących już rekordów?

#php #symfony #naukaprogramowania
  • 8
@bananowy_szejk: równie dobrze możesz w konstruktorze wpisywać new DateTime() dla tych pól, czy settować gdzieś po drodze po stworzeniu obiektu. DoctrineExtensions ma listenery, które się załączają przy każdym wowołaniu skonfigurowanego z nimi EntityManager
... function __construct(...) {
$this->createdAt = new \DateTime();
}

$entity = new Post();
$entity->setCreatedAt(new \DateTime());