Я хотел бы переопределить атрибут роли FOSUser в Symfony (3.4), потому что я хочу, чтобы у пользователя была только одна роль.
По умолчанию этот атрибут представляет собой массив, я хочу заменить его строкой.
Итак, я думаю, мне нужно переопределить функцию __construct() по умолчанию? Потому что в нем есть такая строка:
$this->roles = array();
Судя по тому, что я нашел в Google, я, возможно, должен использовать аннотацию, подобную приведенной ниже, для моей пользовательской сущности, вы можете подтвердить?
/*
* @AttributeOverrides({
* @AttributeOverride(name = "roles",
* column=@Column(
* name = "roles",
* type = "string",
* length = 30
* ))})
*/
Есть ли у меня правильная идея? Как я мог переопределить конструктор или заставить его работать?
Похоже, вы пытаетесь исправить ситуацию поверх всей структуры FOSUserBundle. Вместо этого я бы ввел ограничения в ваше приложение, чтобы не позволять пользователю иметь более одной роли, вместо того, чтобы пытаться просто взломать исправление базы данных в нем.




Теперь это невозможно, вы можете переопределить только имя, но вы не можете изменить тип
Когда я пытаюсь обновить свою базу данных с помощью этой аннотации, я получил следующую ошибку: тип столбца атрибута «роли» в классе «UserBundle \ Entity \ User» не может быть изменен.