Symfony-实体-一个具有两个setter / getter的字段?

时间:2018-08-31 06:36:45

标签: php symfony entity

我想要具有两个或多个getter / setter f的字符串类型列(用于位操作)。例如:

const STATUS_NEW         = 0b00001000;
const STATUS_NEW2        = 0b00000010;

/**
 * @var String
 *
 * @ORM\Column(name="modelStatus", type="string", length=1, nullable=true)
 */
private $status;

public function getNew()
{
    return ($this->status and $this::NEW);
}

public function setNew(bool $set)
{
    if ($set) {
        $this->status = ($this->status | $this::STATUS_NEW);
    } else {
        $this->status = ($this->status & ~$this::STATUS_NEW);
    }
    return $this;
}

public function getNew2()
{
    return ($this->status and $this::NEW2);
}

public function setNew2(bool $set)
{
    if ($set) {
        $this->status = ($this->status | $this::NEW2);
    } else {
        $this->status = ($this->status & ~$this::NEW2);
    }
    return $this;
}

格式:

$builder->add('new', CheckboxType::class, [
    'required' => false,
->add('new2', CheckboxType::class, [
    'required' => false,
])

当我选中复选框时,它仅“输入”最后一个设置器,而不是全部:(

对不起,我的英语水平

1 个答案:

答案 0 :(得分:0)

好吧,我找到了一个解决方案-错误在于我的“ get函数(它没有返回正确的值,因此他认为该字段未更改)。

检查位是否设置的正确方法:     return($ this-> status&$ this :: STATUS_NEW?true:false);