Установка значения по умолчанию для поля с аннотациями 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();
Ответы
Ответ 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