Following the Doctrine guidelines I understand how to set a default value for an Entity, but what if I wanted a date/time stamp?
My problem is my database has a default of NOW() on a field but when I use Doctrine to insert a record the values are null or blank but the rest of the insert happened.
Also since Doctrine says to declare the default as a const, this also creates a problem.
Suggestions?
Advertisement
Answer
Ok I found the solution:
- https://doctrine-orm.readthedocs.org/en/latest/reference/php-mapping.html?highlight=callback
- http://doctrine-orm.readthedocs.org/en/latest/reference/events.html#lifecycle-events
The prePersist
option is what I’m doing.
Make sure you define in the annotations
<?php /** @Entity * @HasLifecycleCallbacks */ class User
and here is the function example they offer
/** * @PrePersist */ public function doStuffOnPrePersist() { $this->createdAt = date('Y-m-d H:i:s'); }
And if you’re using ORM like I am
<?php /** @ORMEntity * @ORMHasLifecycleCallbacks */ class User
and here is the function example they offer
/** * @ORMPrePersist */ public function doStuffOnPrePersist() { $this->createdAt = date('Y-m-d H:i:s'); }