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

时间:2019-04-05 14:46:08

标签: php symfony join null entity

我正在将实体“数据”与实体“文档”关联

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

  private $document;

如果数据未连接到任何文档,则我的数据库显示NULL。 但是,当它未连接时,我希望它为空。这是我的方法:

ls

但是我收到一条错误消息:

  

执行期间迁移20190405143905失败。错误异常   执行“ ALTER TABLE数据更改文档文档”时发生   INT NOT NULL':

     

执行'ALTER TABLE数据更改时发生异常   文档文档INT NOT NULL':

     

SQLSTATE [HY000]:常规错误:1832无法更改列   'document':用于外键约束'FK_ADF3F363D8698A76'

2 个答案:

答案 0 :(得分:1)

您需要删除链接到数据的文档条目,否则您将打破外键约束。然后,您可以在数据出现内将文档ID设置为null

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

答案 1 :(得分:-1)

@ORM\JoinColumn(name="document", referencedColumnName="id", nullable=false)

并使用

进行更改
php bin/console doctrine:generate:entities BundleName

和外键不能有空值,对于NULL也是一样,即使您输入NULL值

ON DELETE = RESTRICT and ON UPDATE = RESTRICT