我试图避免手动为字段输入0或1,$locked所以我在注释中将默认值指定为0@ORM但是它没有按预期工作,所以我在下面收到错误.我虽然options={"default"=0}会处理它,但看起来它没有处理它!
是否有一种通过默认值分配0的方法,以便INSERT语句不会失败?
注意:我可以用prePersist()方法__construct()或其他方法对其进行排序,$locked = 0;但我感兴趣的是@ORM注释解决方案.
如果@ORM注释没有处理它有什么意义,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
Run Code Online (Sandbox Code Playgroud)
用户实体:
/**
* @var boolean
* @ORM\column(type="boolean", options={"default"=0})
*/
protected $locked;
Run Code Online (Sandbox Code Playgroud)
控制器:
$user: new USer();
$user->setUsername('username');
$em->persist($user);
$em->flush();
Run Code Online (Sandbox Code Playgroud)
dmn*_*ptr 24
这就是你所需要的:
/**
* @var boolean
* @ORM\column(type="boolean")
*/
protected $locked = 0;
Run Code Online (Sandbox Code Playgroud)
要么:
/**
* @var boolean
* @ORM\column(type="boolean")
*/
protected $locked = false;
Run Code Online (Sandbox Code Playgroud)
UPDATE
Doctrine不支持通过SQL中的"DEFAULT"关键字在列中设置默认值.
| 归档时间: |
|
| 查看次数: |
20463 次 |
| 最近记录: |