Doctrine 2将布尔值设置为null

时间:2012-11-16 21:29:48

标签: symfony doctrine-orm

我有一个带有boolean类型的Doctrine2实体,在mysql中使用tinyint来存储结果。在初始添加值时,我可以将其设置为null。如果我保存为0或1,我传递的任何新值除了0或1之外,保存为0。

下面是带有get和set方法的变量。我已经完成了一个var_dump来确认该值在保存为0之前被设置为null。

 /**
 * @var string $completed
 *
 * @ORM\Column(name="is_completed", type="boolean", length=1, nullable=true)
 * @Api(type="field")
 */
private $completed;

 /**
 * Set completed
 *
 * @param boolean $value
 */
public function setCompleted($value = null)
{
    if ($value=='') {
        $value = null;
    }
    $this->completed = $value;
}

/**
 * Get completed
 *
 * @return boolean
 */
public function getCompleted()
{
    if (is_null($this->completed)) {
        $this->completed = '';
    }
    return $this->completed;
}

1 个答案:

答案 0 :(得分:1)

试试这个:

public function setCompleted($value = null)
{
    if ('' === $value) {
        $value = null;
    }
    $this->completed = $value ? true : false;
}

假设在传递空字符串时需要null,否则根据true的默认PHP行为,您需要false$value

正如所建议的那样,吸气剂没有副作用!这应该与您的getCompleted完全相同,只要您使用上面的setter:

public function getCompleted()
{
    if (null === $this->completed)) {
        return '';
    }

    return $this->completed;
}