传递给setArchived()的参数1必须是bool的实例,给定布尔值

时间:2014-07-08 13:46:24

标签: symfony doctrine-orm

我有这个属性

 /**
 * @ORM\Column(columnDefinition="TINYINT DEFAULT 0 NOT NULL")
 */
private $archived;
保存Doctrine

执行此操作:

/**
 * @ORM\PrePersist
 * @ORM\PreUpdate
 */
public function updatedDefaults()
{
    if($this->getArchived() == null)
    {
        $this->setArchived(1);
    }
}

但是我收到了这个错误:

Argument 1 passed to setArchived() must be an instance of bool, boolean given

如何在symfony中设置布尔对象?<​​/ p>

感谢

2 个答案:

答案 0 :(得分:3)

问题在于您的setArchived方法:类型提示不能与标量类型一起使用。 您必须删除bool类型:

public function setArchived($archived) {
   $this->archived = $archived; return $this; 
}

(也许你写&#39; bool&#39;而不是&#39; boolean&#39;当使用doctrine:generate:entities?)

答案 1 :(得分:1)

为什么不使用列类型“boolean”?

/**
 * @ORM\Column(type="boolean")
 */
private $archived;

然后在你的更新函数中传递true / false而不是1/0

/**
 * @ORM\PrePersist
 * @ORM\PreUpdate
 */
public function updatedDefaults()
{
    if($this->getArchived() == null)
    {
        $this->setArchived(true);
    }
}