*/ #[ORM\ManyToMany(targetEntity: Tag::class, mappedBy: 'snips')] public Collection $tags; public function __construct() { $this->snipContents = new ArrayCollection(); $this->tags = new ArrayCollection(); } public function __toString(): string { return $this->name ?? ''; } public function getActiveText(): string { return SnipContentService::rebuildText($this->activeVersion); } public function addSnipContent(SnipContent $snipContent): self { if (!$this->snipContents->contains($snipContent)) { $this->snipContents->add($snipContent); $snipContent->setSnip($this); } return $this; } public function removeSnipContent(SnipContent $snipContent): self { if ($this->snipContents->removeElement($snipContent)) { // set the owning side to null (unless already changed) if ($snipContent->getSnip() === $this) { $snipContent->setSnip(null); } } return $this; } public function getLatestVersion(): ?SnipContent { return $this->snipContents->last() ?: null; } public function addTag(Tag $tag): static { if (!$this->tags->contains($tag)) { $this->tags->add($tag); $tag->addSnip($this); } return $this; } public function removeTag(Tag $tag): static { if ($this->tags->removeElement($tag)) { $tag->removeSnip($this); } return $this; } }