Если я не прав, поправьте меня, пожалуйста.Но я знал, что Doctrine не поддерживает дефолт.Вы делаете это на уровне php, как
/**
* @Column(type="string", length=255)
*/
private $something = "blabla";
Глядя на ваш исходный код, я вижу, что вы используете расширение gedmo для доктрины.Я прав?Таким образом, у вас есть два способа сделать это.
1) Просто с помощью Doctrine, нет Gedmo Внимательно прочитайте это руководство и вы заметите аннотации @HasLifecycleCallbacks.
Таким образом, вы должны отредактировать свой код как;
ФАЙЛ КЛАССА
<?php
namespace models;
/**
* @Entity
* @Table(name="workers")
* @HasLifecycleCallbacks
*/
class Workers {
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @Column(type="string", length=255, unique=true, nullable=false)
*/
protected $email;
/**
* @var datetime $created_on
* @Column(type="datetime")
*/
protected $created_on;
/** @PrePersist */
function onPrePersist()
{
//using Doctrine DateTime here
$this->created_on = new \DateTime('now');
}
/* Setters & Getters */
public function setEmail($email){ $this->email = $email; }
public function getEmail(){ return $this->email; }
}
2) Использование Gedmo
Если вы предпочитаете использовать расширение Gedmo Timestampable, просто отбросьте предварительный список функций, потому что gedmo сделает все за вас.Я также проверил мои исходные коды.Я надеюсь, что у меня нет неправильных предсказаний здесь
CLASS FILE
<?php
namespace models;
/**
* @Entity
* @Table(name="workers")
*/
class Workers {
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @Column(type="string", length=255, unique=true, nullable=false)
*/
protected $email;
/**
* @var datetime $created_on
* @Column(type="datetime")
* @gedmo:Timestampable(on="create")
*/
protected $created_on;
/* Setters & Getters */
public function setEmail($email){ $this->email = $email; }
public function getEmail(){ return $this->email; }
}