我的问题需要帮助。 将关系ManyToMany添加到php脚本时,验证关系时会返回。 这是我的脚本:
class Post implements ResourceInterface, TranslatableInterface
{
/**
* @var int
*/
private $id;
/**
* @var bool
*/
private $important;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Tag", inversedBy="posts")
* @ORM\JoinTable(name="posts_tags",
* joinColumns={
* @ORM\JoinColumn(name="post_id", referencedColumnName="id", onDelete="CASCADE")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="tag_id", referencedColumnName="id")
* }
* )
*/
private $tags;
}
和
class Tag implements ResourceInterface, TranslatableInterface
{
use TranslatableTrait {
__construct as private initializeTranslationsCollection;
}
/**
* @var int
*/
private $id;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Post",
mappedBy="tags")
*/
private $posts;
}
错误是:
映射
[FAIL]实体类AppBundle \ Entity \ Tag映射无效:* 字段AppBundle \ Entity \ Tag#posts位于bi-
的反面上 方向关系,但指定的mapBy关联在 目标实体AppBundle \ Entity \ Post#tags不包含 必需的'inversedBy =“ posts”'属性。
答案 0 :(得分:0)
你好使用symfony maker
。 / bin / console make:实体发布
对于字段名称,输入'tags',对于类型,输入'relation'。然后给出相关标签的实体名称。应该是Tag。选择多对多关系并输入。这样,您就永远不会有关系问题:-)。即使该实体已经存在。
答案 1 :(得分:0)
也许post实体中标签属性的映射应该是这样的:
class Post implements ResourceInterface, TranslatableInterface
{
/**
* @var int
*/
private $id;
/**
* @var bool
*/
private $important;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Tag", inversedBy="posts", cascade={"persist"})
* @ORM\JoinTable(name="posts_tags",
* joinColumns={
* @ORM\JoinColumn(name="post_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="tag_id", referencedColumnName="id")
* }
* )
*/
private $tags;
}
我希望我有所帮助:)