如何将我的实体字段设置为 "nullable=false"?

How can I set my entity field to "nullable=false"?

我正在连接我的实体 "data" 和我的实体 "documents"

  /**
   * @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;

但我收到一条错误消息:

Migration 20190405143905 failed during Execution. Error An exception occurred while executing 'ALTER TABLE data CHANGE document document INT NOT NULL':

An exception occurred while executing 'ALTER TABLE data CHANGE document document INT NOT NULL':

SQLSTATE[HY000]: General error: 1832 Cannot change column 'document': used in a foreign key constraint 'FK_ADF3F363D8698A76'

您需要删除链接到您的数据的文档条目,否则您将破坏外键约束。然后你可以在数据发生

中将文档ID设置为空

如果您因为需要文档条目而无法删除它们,那么我建议您将它们迁移到临时 table,对数据库模型进行必要的更改,然后将文档条目放回变成原来的table