我无法将false
值设置为类型为boolean
的实体列。
/**
* @ORM\Column(type="boolean")
*/
private $isActive;
发送JSON:
{myEntity: {isActive: false}}
...将导致:
完整性约束违规:1048列'is_active'不能为空
发送时:
{myEntity: {isActive: 0}}
......会正常工作
stackoverflow上有一些类似的答案,但解决方案都没有。
RAW COLUMN
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| is_active | tinyint(1) | NO | | NULL | |
+-------------+--------------+------+-----+---------+-----------------+
修改
请阅读下面的答案。这不是一个Doctrine bug,而是MariaDB 10.2系列。
答案 0 :(得分:0)
遗憾的是,这不是主要问题的解决方案,但它会提供一些见解。
将MariaDB 10.2系列(未测试10.0系列)发生false
转换为null
的问题。
MySQL或MariaDB 5.5系列上没有出现上述问题,它会以正确的方式将false
转换为false
。
专门针对MariaDB 10.2错误提出另一个问题。
答案 1 :(得分:-1)
或者,您应该评估:
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isActive;
您并不总是有机会和/或想要在课堂上初始化一个值。
更新:
我意识到我的回答不是正确的。也许你可以在构造函数中初始化属性,或者自动调用setter。无论如何,你必须“欺骗”你的实体已经改变的Doctrine的工作单元。