对称布尔字段转换为形式

2022-08-31 00:42:46

我在实体中有这个字段:

/**
* @ORM\Column(type="boolean")
*/
protected $done = 0;

在数据库中,它是 .当我尝试将其添加到表单中时:tinyint(1)

$builder
   ->add('done', 'checkbox')

它会引发错误:

Unable to transform value for property path "done": Expected a Boolean.

哼?它不是布尔值吗?


答案 1

0 或 1 不是布尔值。它们是整数。在域模型中使用真/假。

/**
 * @ORM\Column(type="boolean")
 */
protected $done = false;

答案 2

非常感谢你的解决方案,但这对我不起作用。我使用symfony 4。我就是这样完成的,

实体

/**
* @ORM\Column(type="boolean")
*/
protected $done = 0;

public function getDone(): ?bool
{
    return $this->done;
}

public function setDone(?bool $done): self
{
    $this->done = $done;

    return $this;
}

表单类型,

->add('done', CheckboxType::class, array(
    'required' => false,
    'value' => 1,
))

我需要添加使用CheckboxType,因为我调用了类。(使用Symfony\Component\Form\Extension\Core\Type\CheckboxType;)如果你运行 “php bin/console doctrine:migrations:diff” db 将添加 tinyint(1) 字段


推荐