Как я могу установить поле моей сущности на "nullable = false"? - PullRequest
0 голосов
/ 05 апреля 2019

Я связываю свою сущность "данные" с моей сущностью "документы"

  /**
   * @ORM\ManyToOne(targetEntity="Documents")
   * @ORM\JoinColumn(name="document", referencedColumnName="id")
   */

  private $document;

Если данные не связаны с каким-либо документом, моя база данных показывает NULL. Но я хочу, чтобы он был пустым, когда он не подключен. Это мой подход:

   /**
   * @ORM\ManyToOne(targetEntity="Documents")
   * @ORM\JoinColumn(name="document", referencedColumnName="id", nullable=false)
   */

  private $document;

Но я получаю сообщение об ошибке:

Ошибка переноса 20190405143905 во время выполнения. Ошибка Исключение произошла при выполнении документа документа «ИЗМЕНЕНИЕ ДАННЫХ ТАБЛИЦЫ ALTER TABLE» INT NOT NULL ':

Возникла исключительная ситуация при выполнении 'ALTER TABLE CHANGE data CHANGE документ документ INT NOT NULL ':

SQLSTATE [HY000]: общая ошибка: 1832 Невозможно изменить столбец 'документ': используется в ограничении внешнего ключа 'FK_ADF3F363D8698A76'

1 Ответ

1 голос
/ 08 апреля 2019

Вам необходимо удалить записи документа (ов), связанные с вашими данными, в противном случае вы нарушаете ограничение внешнего ключа.Затем вы можете установить для идентификатора документа значение null в вхождении данных

Если вы не можете удалить записи документов, потому что они вам нужны, тогда я рекомендую перенести их во временную таблицу, внесите необходимые изменения в свой файл.модель базы данных, а затем положить записи документов обратно в исходную таблицу

...