У меня есть существующий класс сущности 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.