将默认值设置为具有ORM注释和处理查询的字段

时间:2014-10-07 15:06:32

标签: symfony doctrine

我正在尝试避免手动为$locked字段输入 0 1 ,因此我在{中指定默认为 0 {1}}注释然而它没有按预期工作,所以我在下面得到错误。我虽然@ORM会处理它但看起来却没有处理它!

是否有一种通过默认值分配0的方法,以便INSERT语句不会失败?

注意:我可以使用options={"default"=0}方法prePersist()__construct()对其进行排序,但我感兴趣的是@ORM注释解。

如果@ORM注释没有处理它,那么$locked = 0;有什么意义,因为它标记了数据库中的字段默认值?见下图。

enter image description here

错误

options={"default"=0}

用户实体

DBALException: An exception occurred while executing "INSERT INTO user (username, locked) VALUES (?, ?)" with params ["username", null]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column "locked" cannot be null

控制器

/**
 * @var boolean
 * @ORM\column(type="boolean", options={"default"=0})
 */
protected $locked;

1 个答案:

答案 0 :(得分:24)

这就是你所需要的:

/**
 * @var boolean
 * @ORM\column(type="boolean")
 */
protected $locked = 0;

或:

/**
 * @var boolean
 * @ORM\column(type="boolean")
 */
protected $locked = false;

<强>更新

  

Doctrine不支持在列中设置默认值   SQL中的“DEFAULT”关键字。

http://docs.doctrine-project.org/en/latest/reference/faq.html#how-can-i-add-default-values-to-a-column