[英]Symfony2 ManytoMany bidirectional relationship - How to persist manually
[英]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.