【问题标题】:How can I set my entity field to "nullable=false"?如何将我的实体字段设置为“nullable=false”?
【发布时间】:2019-04-05 14:46:07
【问题描述】:

我正在将我的实体“数据”与我的实体“文档”连接起来

  /**
   * @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 data CHANGE document document 时发生 INT NOT NULL':

执行 'ALTER TABLE data CHANGE 时发生异常 文档文档INT NOT NULL':

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

【问题讨论】:

  • 你说的是什么意思?
  • @u_mulder 我的意思是,在数据库中,该字段是 NULL NULL NULL。我只想要没有内容,只是空白。这可能吗?
  • 还有NULL有什么问题,也是个空值
  • @u_mulder 嗯,好的。然后我并没有真正理解NULL的目的是什么。在我看来这是一个错误

标签: php symfony join null entity


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-01-18
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多