我刚刚将 FOSUserBundle 第一次导入到 symfony2 项目中,并且在扩展用户实体时发现了一个问题。我添加了带有 prePersist 和 preUpdate 生命周期回调的 created_at 和 updated_at 字段,但是这些方法没有被读取。
如果我将这些字段的设置器放在构造函数中,则填充字段(但显然这不适用于 updated_at)。我添加的其他字段按预期工作。
您是否需要以某种方式扩展 UserListener 以允许生命周期事件正常工作?
请在下面找到我的代码,任何帮助或建议将不胜感激。
用户实体:
namespace Acme\UserExtensionBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Acme\UserExtensionBundle\Entity\User
*
* @ORM\Table(name="acme_user")
* @ORM\Entity()
* @ORM\HasLifecycleCallbacks()
*/
class User extends BaseUser{
/**
* @var integer $id
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var datetime $created_at
* @ORM\Column(name="created_at", type="datetime")
*/
protected $created_at;
/**
* @var datetime $updated_at
* @ORM\Column(name="updated_at", type="datetime")
*/
protected $updated_at;
...
public function __construct() {
parent::__construct();
$this->created_at = new \DateTime;
$this->updated_at = new \DateTime;
}
/*
* @ORM\preUpdate
*/
public function setUpdatedTimestamp(){
$this->updated_at = new \DateTime();
}
...