Symfony + Doctrine - 将属性默认值设置为ID

时间:2017-02-20 14:20:50

标签: symfony annotations doctrine

我有一个名为Question的{​​{1}}实体。我希望默认情况下使用Doctrine注释将code的值设置为code

这就是我尝试的方法,但我收到了错误:

id

或者:

/**
 * @ORM\Column(type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id; 

/**
 * @ORM\Column(type="integer")
 */
private $code = $id;

感谢。

1 个答案:

答案 0 :(得分:2)

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html

我不知道你的需求,但也许postPersist事件是你想要的:

  

postPersist - postPersist事件发生在一个实体之后   实体已经坚持不懈。它将在数据库之后调用   插入操作。生成的主键值可在   postPersist活动。

然后在你的实体中:

/**
 * @ORM\Column(type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id; 

/**
 * @ORM\Column(type="integer")
 */
private $code;

/** @PostPersist */
public function doStuffOnPostPersist()
{
    $this->code = $this->id;
}

重要的是要明白,你的学说实体只有在坚持之后才会有一个ID,因此在事后坚持事件之后。