Doctrine - однонаправленное отношение «многие ко многим» - переменная отношения равна нулю для существующих элементов - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть существующий класс сущности Items. Я хочу добавить новое однонаправленное отношение «многие ко многим».

В классе Items. php Я определяю отношение, начальное значение конструкции и методы:

/**
 * @var \Doctrine\Common\Collections\Collection|\Tags\Entity\Tags[]
 * @ORM\ManyToMany(targetEntity="Tags", cascade={"persist"})
 * @ORM\JoinTable(
 *     name="item_tags",
 *     joinColumns={
 *         @ORM\JoinColumn(name="item_id", referencedColumnName="id")
 *     },
 *     inverseJoinColumns={
 *         @ORM\JoinColumn(name="tag_id", referencedColumnName="id")
 *     }
 * )
 */
private $tags;

public function __construct() 
{
    $this->tags = new ArrayCollection();
}

public function getTags(): Collection
{
    return $this->tags;
}

public function addTag(Tag $tag): self
{
    if (!$this->tags->contains($tag)) {
       $this->tags->add($tag);
    }

    return $this;
}

public function removeTag(Tag $tag): self
{
    if ($this->tags->contains($tag)) {
        $this->tags->removeElement($tag);
    }

   return $this;
}

Иногда, когда я попытаться получить доступ к $this->tags для существующего элемента (например, вызов метода addTag для добавления нового тега), я получаю ошибки, такие как Call to a member function contains() on null. Это указывает на то, что переменная отношения $tags не всегда инициализируется для существующих элементов и фактически является null. Как правильно обращаться с этой ситуацией для существующих записей Предметов? Это прекрасно работает для новых объектов Item.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...