Doctrine:布尔值映射到数字(POSTGRESQL)

问题描述 投票:0回答:1

我在 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 端使用布尔值?

postgresql doctrine-orm doctrine
1个回答
0
投票

就个人而言,我在 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.