我在 Doctrine 插入或更新布尔字段时遇到问题。 sql 请求是使用数字而不是布尔值构建的。 这是一个例子:
$qb = $this->getEntityManager()->createQueryBuilder()
->update('MyBundle:Message', 'message')
->set('message.read', 'true');
结果:
更新project.message SET read = 1 WHERE ID = ?'参数为 ["225"]
错误:列“read”是布尔类型,但表达式是整数类型
蒂
注意:消息类
/**
* @var boolean
*
* @ORM\Column(name="READ", type="boolean", nullable=false)
*/
private $read = false;
注2:要使其运行,我可以写:
$qb = $this->getEntityManager()->createQueryBuilder() ->更新('MyBundle:消息','消息') ->set('message.read', 'true');
(像一根绳子)
有没有更好的方法可以让我在 PHP 端使用布尔值?
就个人而言,我在 Phpdocs 和代码本身中将我的标志声明为
bool
,而不是布尔值。
你可以试试这个方法吗:
/**
* @var bool
*
* @ORM\Column(name="READ", type="boolean", nullable=false)
*/
private $read = false;
/**
* @param bool|null $read
*/
public function setRead(?bool $read): void
{
$this->read = $read;
}