繁体   English   中英

双向关系ManyToMany symfony

[英]Bidirectional relationship ManyToMany symfony

我的问题需要帮助。 将关系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;
}

错误是:

制图

[失败]实体类AppBundle \\ Entity \\ Tag映射无效:*字段AppBundle \\ Entity \\ Tag#posts位于双向
方向关系,但在目标实体AppBundle \\ Entity \\ Post#tags上指定的mappingBy关联不包含必需的'inversedBy =“ posts”'属性。

你好使用symfony制造商

/ bin / console make:实体发布

对于字段名称,请输入'tags',对于类型,请输入'relation'。 然后给出相关标签的实体名称。 应该是Tag。 选择多对多关系并输入。 这样,您就永远不会有关系问题:-)。 即使该实体已经存在。

也许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;
}

我希望我有所帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM