内部实体类:
/** @Entity @HasLifecycleCallbacks */
class Job {
/** @PrePersist */
public function setCreatedAtOnCreate()
{
//some code
}
/** @PrePersist */
public function setExpiresAtOnCreate()
{
//some code
}
使用命令doctrine:fixtures:load更新数据库数据会给我一个错误:
列created_at不能为空。
有人可以帮忙吗?我缺少什么?
答案 0 :(得分:4)
定义回调函数后,必须将这两个函数指定为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文件中,您必须在生命周期回调中调用这两个函数,
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 ]
此回调将在将数据插入数据库之前调用,并且setUpdatedAtValue函数将在更新Db中的任何值之前调用
希望这会对你有所帮助。 快乐的编码。