207 lines
4.1 KiB
PHP
207 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace App\Entity\Blog;
|
|
|
|
use App\Core\Doctrine\Timestampable;
|
|
use App\Core\Entity\EntityInterface;
|
|
use App\Repository\Blog\CategoryRepository;
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
use Doctrine\Common\Collections\Collection;
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
|
|
/**
|
|
* @ORM\Entity(repositoryClass=CategoryRepository::class)
|
|
* @ORM\HasLifecycleCallbacks
|
|
*/
|
|
class Category implements EntityInterface
|
|
{
|
|
use Timestampable;
|
|
|
|
/**
|
|
* @ORM\Id
|
|
* @ORM\GeneratedValue
|
|
* @ORM\Column(type="integer")
|
|
*/
|
|
private $id;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=255)
|
|
*/
|
|
private $title;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=255, nullable=true)
|
|
*/
|
|
private $subTitle;
|
|
|
|
/**
|
|
* @ORM\Column(type="text", nullable=true)
|
|
*/
|
|
private $description;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", length=255, nullable=true)
|
|
*/
|
|
private $slug;
|
|
|
|
/**
|
|
* @ORM\ManyToMany(targetEntity=Post::class, mappedBy="categories")
|
|
*/
|
|
private $posts;
|
|
|
|
/**
|
|
* @ORM\Column(type="boolean", options={"default"=1})
|
|
*/
|
|
private $isActive;
|
|
|
|
/**
|
|
* @ORM\ManyToOne(targetEntity=Category::class, inversedBy="categories")
|
|
*/
|
|
private $parentCategory;
|
|
|
|
/**
|
|
* @ORM\OneToMany(targetEntity=Category::class, mappedBy="parentCategory")
|
|
*/
|
|
private $categories;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->posts = new ArrayCollection();
|
|
$this->categories = new ArrayCollection();
|
|
}
|
|
|
|
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 getSubTitle(): ?string
|
|
{
|
|
return $this->subTitle;
|
|
}
|
|
|
|
public function setSubTitle(?string $subTitle): self
|
|
{
|
|
$this->subTitle = $subTitle;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getDescription(): ?string
|
|
{
|
|
return $this->description;
|
|
}
|
|
|
|
public function setDescription(?string $description): self
|
|
{
|
|
$this->description = $description;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getSlug(): ?string
|
|
{
|
|
return $this->slug;
|
|
}
|
|
|
|
public function setSlug(?string $slug): self
|
|
{
|
|
$this->slug = $slug;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection|Post[]
|
|
*/
|
|
public function getPosts(): Collection
|
|
{
|
|
return $this->posts;
|
|
}
|
|
|
|
public function addPost(Post $post): self
|
|
{
|
|
if (!$this->posts->contains($post)) {
|
|
$this->posts[] = $post;
|
|
$post->addCategory($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removePost(Post $post): self
|
|
{
|
|
if ($this->posts->removeElement($post)) {
|
|
$post->removeCategory($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getIsActive(): ?bool
|
|
{
|
|
return $this->isActive;
|
|
}
|
|
|
|
public function setIsActive(?bool $isActive): self
|
|
{
|
|
$this->isActive = $isActive;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getParentCategory(): ?self
|
|
{
|
|
return $this->parentCategory;
|
|
}
|
|
|
|
public function setParentCategory(?self $parentCategory): self
|
|
{
|
|
$this->parentCategory = $parentCategory;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection|self[]
|
|
*/
|
|
public function getCategories(): Collection
|
|
{
|
|
return $this->categories;
|
|
}
|
|
|
|
public function addCategory(self $category): self
|
|
{
|
|
if (!$this->categories->contains($category)) {
|
|
$this->categories[] = $category;
|
|
$category->setParentCategory($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeCategory(self $category): self
|
|
{
|
|
if ($this->categories->removeElement($category)) {
|
|
// set the owning side to null (unless already changed)
|
|
if ($category->getParentCategory() === $this) {
|
|
$category->setParentCategory(null);
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
}
|