3

我有一个 Doctrine2 实体,其类型为 boolean,在 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;
}
4

1 回答 1

1

尝试这个:

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

假设,当传递一个你想要的空字符串null,否则你想要true或者false基于 PHP 的默认行为$value

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

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

    return $this->completed;
}
于 2012-11-17T19:35:40.193 回答