Двунаправленные отношения ManyToMany Symfony - PullRequest
0 голосов
/ 12 октября 2018

Мне нужна помощь по моей проблеме.При добавлении отношения 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 mapping недопустим: * Поле AppBundle \ Entity \ Tag # posts находится на обратной стороне двунаправленного отношения
, но указанное сопоставление mappedBy в целевом объекте AppBundle \ Entity \ Post#tags не содержит обязательный атрибут 'inversedBy = "posts"'.

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

может быть, отображение атрибута тегов в объекте 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;
}

Надеюсь, я помог:)

0 голосов
/ 13 октября 2018

Здравствуйте, используйте Symfony Maker

./ bin / console make: entity Post

В качестве имени поля введите «теги», а для типа введите «отношение».Затем дайте связанные теги имя сущности.Тэг.Выберите множество отношений и введите.Таким образом, у вас никогда не должно быть проблем в отношениях :-).Даже если сущность уже существует.

...