Подтвердить что ты не робот

Установка значения по умолчанию для поля с аннотациями ORM и обработчиками запросов

Я пытаюсь не вводить поле 0 или 1 для $locked вручную, поэтому я назначил по умолчанию 0 в @ORM но это не работает должным образом, поэтому я получаю ошибку ниже. Я, однако, options={"default"=0} обрабатывал бы его, но появлялся, поскольку он не справляется с этим!

Есть ли способ присвоения 0 defauls, чтобы оператор INSERT не терпел неудачу?

Примечание. Я могу разобраться с методом prePersist(), __construct() или $locked = 0;, но меня интересует решение @ORM для аннотации.

Если аннотация @ORM не обрабатывает его, то какая точка имеет options={"default"=0}, так как она помечает по умолчанию значение по умолчанию в базе данных? См. Изображение ниже.

enter image description here

Ошибка

DBALException: An exception occurred while executing "INSERT INTO user (username, locked) VALUES (?, ?)" with params ["username", null]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column "locked" cannot be null

Пользовательский объект:

/**
 * @var boolean
 * @ORM\column(type="boolean", options={"default"=0})
 */
protected $locked;

контроллер

$user: new USer();
$user->setUsername('username');
$em->persist($user);
$em->flush();
4b9b3361

Ответ 1

Это все, что вам нужно:

/**
 * @var boolean
 * @ORM\column(type="boolean")
 */
protected $locked = 0;

или

/**
 * @var boolean
 * @ORM\column(type="boolean")
 */
protected $locked = false;

UPDATE

Doctrine не поддерживает установку значений по умолчанию в столбцах через ключевое слово "DEFAULT" в SQL.

http://docs.doctrine-project.org/en/latest/reference/faq.html#how-can-i-add-default-values-to-a-column