实体类映射无效

时间:2014-10-09 16:11:45

标签: php symfony

您好我正在尝试在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;

我不确定它有什么问题,但似乎与注释有关。请帮忙,谢谢!

2 个答案:

答案 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的情况下,也可能在其他情况下)。

这解决了这个问题。祝你有个美好的一天!