<?php
namespace App\CasinoBundle\Entity;
use Doctrine\Common\Collections\Collection;
use App\CmsBundle\Entity\Site;
use App\CmsBundle\Entity\SlugTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use App\CmsBundle\Entity\IdTrait;
/**
* BlogTag
*
* @ORM\Table(
* name="blog_tag",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="blog_tag_slug_uindex", columns={"slug"}),
* @ORM\UniqueConstraint(name="blog_tag_name_uindex", columns={"name"})
* }
* )
* @ORM\Entity(repositoryClass="App\CasinoBundle\Repository\BlogTagRepository")
* @ORM\HasLifecycleCallbacks()
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="one_day")
*/
class BlogTag
{
use IdTrait, SlugTrait, NameTrait;
/**
* @ORM\ManyToMany(targetEntity="Article", mappedBy="blogTags", cascade={"persist"})
*/
private $articles;
/**
* @ORM\ManyToMany(targetEntity="App\CmsBundle\Entity\Site", cascade={"persist"})
* @ORM\JoinTable(
* name="blog_tag_site",
* joinColumns={
* @ORM\JoinColumn(name="blog_tag_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="site_id", referencedColumnName="id")
* }
* )
*/
private $sites;
public function __construct()
{
$this->articles = new ArrayCollection();
$this->sites = new ArrayCollection();
}
public function __toString(): string
{
return $this->name;
}
public function addArticle(Article $article): self
{
if (!$this->articles->contains($article)) {
$this->articles[] = $article;
$article->addBlogTag($this);
}
return $this;
}
public function removeArticle(Article $article): self
{
if ($this->articles->contains($article)) {
$this->articles->removeElement($article);
$article->removeBlogTag($this);
}
return $this;
}
public function getSites(): Collection
{
return $this->sites;
}
public function addSite(Site $site): self
{
if (!$this->sites->contains($site)) {
$this->sites[] = $site;
}
return $this;
}
public function removeSite(Site $site): self
{
if ($this->sites->contains($site)) {
$this->sites->removeElement($site);
}
return $this;
}
}