<?php
namespace App\Entity\Gestiform\Formations\Catalogue\Theme;
use App\Entity\AbstractEntity;
use App\Entity\Gestiform\Formations\Catalogue\Module\Module;
use App\Repository\Gestiform\Formations\Catalogue\Theme\SousThemeThemeRepository;
use App\Trait\SortableEntity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=SousThemeThemeRepository::class)
*/
class SousThemeTheme extends AbstractEntity
{
use SortableEntity;
/**
* @ORM\ManyToOne(targetEntity=Theme::class, inversedBy="sousThemeThemes")
* @ORM\JoinColumn(nullable=false)
*/
private Theme $theme;
/**
* @ORM\ManyToOne(targetEntity=SousTheme::class, inversedBy="sousThemeThemes")
* @ORM\JoinColumn(nullable=false)
*/
private SousTheme $sousTheme;
/**
* @ORM\OneToMany(targetEntity=Module::class, mappedBy="sousThemeTheme")
*/
private Collection $modules;
public function __construct()
{
$this->modules = new ArrayCollection();
}
public function getTheme(): ?Theme
{
return $this->theme;
}
public function setTheme(?Theme $theme): self
{
$this->theme = $theme;
return $this;
}
public function getSousTheme(): ?SousTheme
{
return $this->sousTheme;
}
public function setSousTheme(?SousTheme $sousTheme): self
{
$this->sousTheme = $sousTheme;
return $this;
}
/**
* @return Collection<int, Module>
*/
public function getModules(): Collection
{
return $this->modules;
}
public function addModule(Module $module): self
{
if (!$this->modules->contains($module)) {
$this->modules->add($module);
$module->setSousThemeTheme($this);
}
return $this;
}
public function removeModule(Module $module): self
{
if ($this->modules->removeElement($module)) {
// set the owning side to null (unless already changed)
if ($module->getSousThemeTheme() === $this) {
$module->setSousThemeTheme(null);
}
}
return $this;
}
}