<?php
namespace App\CmsBundle\Entity;
use App\CmsBundle\Enum\DirectoryType;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
/**
* @ORM\Entity(
* repositoryClass="App\CmsBundle\Repository\DirectoryRepository"
* )
* @ORM\Table(
* name="directory",
* indexes={
* @ORM\Index(name="directory_site_index", columns={"site_id"}),
* @ORM\Index(name="directory_route_index", columns={"route_id"})
* }
* )
*/
class Directory
{
use IdTrait, TitleTrait, SiteTrait, TypeTrait;
/**
* @ORM\ManyToOne(targetEntity="App\CmsBundle\Entity\Site", inversedBy="directories")
* @ORM\JoinColumn(nullable=false)
*/
private $site;
/**
* @ORM\OneToOne(targetEntity="App\CmsBundle\Entity\Route", inversedBy="directory")
* @ORM\JoinColumn(name="route_id", referencedColumnName="id")
*/
private $route;
/**
* @ORM\OneToMany(targetEntity="App\CmsBundle\Entity\DirectoryItem", mappedBy="directory", cascade={"persist","remove"})
*/
private $directoryItems;
public function __construct()
{
$this->directoryItems = new ArrayCollection();
}
public function __toString(): string
{
return array_key_exists($this->type, DirectoryType::getValues())
? DirectoryType::getValues()[$this->type] . ' directory'
: 'Directory';
}
/**
* @return Route|null
*/
public function getRoute(): ?Route
{
return $this->route;
}
/**
* @param Route|null $route
* @return $this
*/
public function setRoute(?Route $route = null): self
{
$this->route = $route;
return $this;
}
public function getDirectoryItems(): Collection
{
if (is_null($this->directoryItems)) $this->directoryItems = new ArrayCollection();
return $this->directoryItems;
}
}