<?php
namespace App\CmsBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="menu",
* indexes={
* @ORM\Index(name="menu_site_index", columns={"site_id"})
* }
* )
* @ORM\Entity(repositoryClass="App\CmsBundle\Repository\MenuRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Menu
{
use IdTrait, TitleTrait, TimeStampedTrait;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private $title;
/**
* @ORM\ManyToOne(targetEntity="App\CmsBundle\Entity\Site", inversedBy="menus")
* @ORM\JoinColumn(nullable=false)
*/
private $site;
/**
* @ORM\OneToMany(targetEntity="App\CmsBundle\Entity\MenuItem", mappedBy="menu", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $menuItems;
public function __construct()
{
$this->menuItems = new ArrayCollection();
}
public function __toString()
{
return $this->getSite()->getTitle().' - '.$this->title;
}
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): ?string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getSite(): ?Site
{
return $this->site;
}
public function setSite(?Site $site): self
{
$this->site = $site;
return $this;
}
/**
* @return Collection|MenuItem[]
*/
public function getMenuItems(): Collection
{
return $this->menuItems;
}
public function addMenuItem(MenuItem $menuItem): self
{
if (!$this->menuItems->contains($menuItem)) {
$this->menuItems[] = $menuItem;
$menuItem->setMenu($this);
}
return $this;
}
public function removeMenuItem(MenuItem $menuItem): self
{
if ($this->menuItems->contains($menuItem)) {
$this->menuItems->removeElement($menuItem);
// set the owning side to null (unless already changed)
if ($menuItem->getMenu() === $this) {
$menuItem->setMenu(null);
}
}
return $this;
}
}