我想要具有两个或多个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,
])
当我选中复选框时,它仅“输入”最后一个设置器,而不是全部:(
对不起,我的英语水平
答案 0 :(得分:0)
好吧,我找到了一个解决方案-错误在于我的“ get函数(它没有返回正确的值,因此他认为该字段未更改)。
检查位是否设置的正确方法: return($ this-> status&$ this :: STATUS_NEW?true:false);