<?php
namespace App\Entity\Scholar\Module;
use App\Entity\Channel\Image;
use App\Entity\Scholar\OriginScholarInterface;
use App\Entity\Scholar\OriginScholarPropertyTrait;
use App\Entity\Scholar\ScholarStatusTrait;
use App\Repository\Scholar\OriginModuleRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Table(name: 'scholar_origin_modules')]
#[ORM\Entity(repositoryClass: OriginModuleRepository::class)]
class OriginModule extends Module implements OriginScholarInterface
{
use OriginScholarPropertyTrait;
use ScholarStatusTrait;
#[ORM\ManyToOne(targetEntity: Image::class)]
#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
private ?Image $image = null;
#[ORM\OneToMany(mappedBy: 'lockBy', targetEntity: SharedModule::class, cascade: ['remove'], fetch: 'EXTRA_LAZY', orphanRemoval: true)]
private ?Collection $sharedModules;
#[ORM\ManyToOne(targetEntity: Module::class, fetch: 'EXTRA_LAZY')]
#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
private ?Module $duplicateFrom = null;
public function __construct() {
$this->sharedModules = new ArrayCollection();
}
public function getImage(): ?Image
{
return $this->image;
}
public function setImage(?Image $image): static
{
$this->image = $image;
return $this;
}
public function getSharedModules(): ?Collection
{
return $this->sharedModules;
}
public function setSharedModules(?Collection $sharedModules): OriginModule
{
$this->sharedModules = $sharedModules;
return $this;
}
public function getDuplicateFrom(): ?Module
{
return $this->duplicateFrom;
}
public function setDuplicateFrom(?Module $duplicateFrom): OriginModule
{
$this->duplicateFrom = $duplicateFrom;
return $this;
}
}