【问题标题】:Doctrine 2 - ManyToOne Nullable relation not workDoctrine 2 - ManyToOne Nullable 关系不起作用
【发布时间】:2019-11-28 08:47:54
【问题描述】:

我的 Symfony4 项目有一个奇怪的错误。 我的关系之一是具有可为空的真值的 ManyToOne,如下所示:

class UserComic
{
 ...
/**
 * @ORM\Id
 * @ORM\ManyToOne(targetEntity="Series")
 * @ORM\JoinColumn(name="id_series", referencedColumnName="id", nullable=true)
 */
private $series;
...
}

然后我尝试创建一个新的 UserComic 并将 $series 属性设置为 NULL,但我收到此错误:

“App\Entity\UserComic 类型的实体缺少为 字段“系列”。此实体的标识符生成策略 需要在 EntityManager#persist() 之前填充 ID 字段 叫做。如果你想要自动生成的标识符,而不是你 需要相应地调整元数据映射。”

由于该字段未设置为可为空。有什么建议吗?

【问题讨论】:

  • PK 不能为或包含 null。因此nullable@ORM\Id 是无效的。

标签: symfony doctrine-orm


【解决方案1】:

ID 表示 UNIQ 且不可为空。

您处于破坏 ID 的 UNIQ 属性的多对一关系(在多方面)

您将 joinColumn 设置为可为空,这会破坏 NOT NULLABLE PROPERTY

【讨论】:

  • Yoshi 已经回答了,都是因为我的粗心。感谢您的 sql 教程:D
  • Yoshi 已经回答了,都是因为我的粗心。感谢您的 sql 教程:D
猜你喜欢
  • 2012-03-29
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多