我正在尝试避免手动为$locked
字段输入 0 或 1 ,因此我在{中指定默认为 0 {1}}注释然而它没有按预期工作,所以我在下面得到错误。我虽然@ORM
会处理它但看起来却没有处理它!
是否有一种通过默认值分配0的方法,以便INSERT语句不会失败?
注意:我可以使用options={"default"=0}
方法prePersist()
或__construct()
对其进行排序,但我感兴趣的是@ORM注释解。
如果@ORM注释没有处理它,那么$locked = 0;
有什么意义,因为它标记了数据库中的字段默认值?见下图。
错误:
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;
答案 0 :(得分:24)
这就是你所需要的:
/**
* @var boolean
* @ORM\column(type="boolean")
*/
protected $locked = 0;
或:
/**
* @var boolean
* @ORM\column(type="boolean")
*/
protected $locked = false;
<强>更新强>
Doctrine不支持在列中设置默认值 SQL中的“DEFAULT”关键字。