PHP Doctrine MongoDB ODM 中的鉴别器字段冲突是什么?
What is discriminator field conflict in PHP Doctrine MongoDB ODM?
报错是什么意思
Discriminator field "x" in "y" conflicts with a mapped field's "name" attribute.
被抛出?
更具体地说,我指的是这种情况:
if ($this->discriminatorField !== null && $this->discriminatorField === $mapping['name']) {
throw MappingException::discriminatorFieldConflict($this->name, $this->discriminatorField);
}
不应将鉴别器字段映射到属性,因此您会看到异常。理论上,开发人员不应该对鉴别器字段的值感兴趣,因为它有助于 ODM 决定应该实例化什么对象或在单集合继承的情况下如何查询文档。在 userland 中,您应该担心的是您正在操作的 class 类型。
现在对于一些历史,异常是在 BETA-10 in 2013 中引入的,但在将鉴别器映射到 属性 之前也是不可能的,提交似乎加强了警卫并引入了一个异常不那么混乱。考虑到 6 年前所做的更改,现在我想说您永远不可能通过映射属性获得鉴别器字段。
报错是什么意思
Discriminator field "x" in "y" conflicts with a mapped field's "name" attribute.
被抛出?
更具体地说,我指的是这种情况:
if ($this->discriminatorField !== null && $this->discriminatorField === $mapping['name']) {
throw MappingException::discriminatorFieldConflict($this->name, $this->discriminatorField);
}
不应将鉴别器字段映射到属性,因此您会看到异常。理论上,开发人员不应该对鉴别器字段的值感兴趣,因为它有助于 ODM 决定应该实例化什么对象或在单集合继承的情况下如何查询文档。在 userland 中,您应该担心的是您正在操作的 class 类型。
现在对于一些历史,异常是在 BETA-10 in 2013 中引入的,但在将鉴别器映射到 属性 之前也是不可能的,提交似乎加强了警卫并引入了一个异常不那么混乱。考虑到 6 年前所做的更改,现在我想说您永远不可能通过映射属性获得鉴别器字段。