您好我正在尝试在Page和Block表之间创建OneToMany关系,但我在验证架构时收到以下错误:
[Mapping] FAIL - The entity-class 'mypath\Entity\Block' mapping is invalid:
* The association mypath\Entity\Block#pages refers to the inverse side field mypath\Entity\Page#blocks which does not exist.
[Mapping] FAIL - The entity-class 'mypath\Entity\Page' mapping is invalid:
* The association mypath\Entity\Page#block refers to the owning side field mypath\Entity\Block#page which does not exist.
以下是我的页面和阻止实体
页:
/**
* @ORM\OneToMany(targetEntity="Block", mappedBy="page")
*/
private $block;
块:
/**
* @ORM\ManyToOne(targetEntity="Page", inversedBy="block")
* @ORM\JoinColumn(referencedColumnName="id")
*/
private $pages;
我不确定它有什么问题,但似乎与注释有关。请帮忙,谢谢!
答案 0 :(得分:0)
在注释中,您可以调用属性" blocks和" page",但是他们会调用" block"和"页面"在实际的代码中。
页:
/**
* @ORM\OneToMany(targetEntity="Block", mappedBy="page")
*/
private $blocks;
块:
/**
* @ORM\ManyToOne(targetEntity="Page", inversedBy="blocks")
*/
private $page;
答案 1 :(得分:-1)
好的,我找到了解决方案。问题在于名字。
因此,如果我们以正常的方式阅读它,那就有意义了。
页面可以有很多块。所以页面实体将是
/**
* @ORM\OneToMany(targetEntity="Block", mappedBy="pages")
*/
private $blocks;
类似地,块属于许多页面。所以块实体将是
/**
* @ORM\ManyToOne(targetEntity="Page", inversedBy="blocks")
* @ORM\JoinColumn(referencedColumnName="id")
*/
private $pages;
targetEntity将始终是类名,它将是单数,字段名称将是复数(在OneToMany的情况下,也可能在其他情况下)。
这解决了这个问题。祝你有个美好的一天!