Symfony 映射错误:“映射相互不一致”和“关联引用了不存在的反向侧字段”

Posted

技术标签:

【中文标题】Symfony 映射错误:“映射相互不一致”和“关联引用了不存在的反向侧字段”【英文标题】:Symfony Mapping Error: "The mappings are inconsistent with each other" & "The association refers to the inverse side field which does not exist" 【发布时间】:2017-11-09 15:15:45 【问题描述】:

我有两个实体映射如下:

class ScriptFeedback

    /**
     * @ORM\ManyToOne(targetEntity="Script", inversedBy="feedback")
     */
    private $script;

    ...


class Script

    /**
     * @ORM\OneToMany(targetEntity="ScriptFeedback", mappedBy="script")
     */
    private $feebdack;

    ...

这可行 - 我可以从中生成迁移,并且网站完全按照我的意愿运行,正确链接我的脚本及其在数据库中的反馈。

但是 - 当我运行 doctrine:schema:validate 时,我得到:

[映射] FAIL - 实体类 'AppBundle\Entity\Script' 映射 是无效的: * 映射 AppBundle\Entity\Script#feebdack 和 AppBundle\Entity\ScriptFeedback#script 各自不一致 其他。

[映射] FAIL - 实体类 'AppBundle\Entity\ScriptFeedback' 映射无效: * 关联 AppBundle\Entity\ScriptFeedback#script 指的是反侧字段 AppBundle\Entity\Script#feedback 不 存在。

有什么想法吗?

【问题讨论】:

你在feebdack有一个错字 【参考方案1】:

因为这个注解:

@ORM\ManyToOne(targetEntity="Script", inversedBy="feedback")

您的脚本实体中有错字

private $feebdack;

应该是

private $feedback;

【讨论】:

嗯,我花了很多时间试图解决这个问题,而不是我愿意承认的。非常感谢! 我在创建教义关系时多次遇到这种错误。这通常只是一个小错字问题或忘记声明反向属性。

以上是关于Symfony 映射错误:“映射相互不一致”和“关联引用了不存在的反向侧字段”的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 教义关联映射错误处理

在 Symfony2 中使用 Doctrine 映射异常错误

Symfony2 找不到映射文件

symfony2 不是有效的实体或映射的超类

Symfony 2 自引用映射的属性“父”构建形式都不是

symfony2 不是有效的实体或映射的超类(使用的超类)