Symfony - сущность - одно поле с двумя сеттерами / геттерами? - PullRequest
0 голосов
/ 31 августа 2018

Я хочу иметь столбец строкового типа (для битовых манипуляций) с двумя или более 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 голосов
/ 31 августа 2018

Хорошо, я нашел решение - ошибка была в моей функции get (она не возвращает правильное значение, поэтому он подумал, что поле не изменилось).

Правильный способ проверить, установлен ли бит: return ($ this-> status & $ this :: STATUS_NEW? true: false);

...