File: /var/www/dvpis2025/dvpis.kaunokolegija.lt/src/Entity/FieldOfStudy.php
<?php
namespace App\Entity;
use App\Repository\FieldOfStudyRepository;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
#[ORM\Table(name: 'field_of_study')]
#[ORM\Entity(repositoryClass: FieldOfStudyRepository::class)]
class FieldOfStudy
{
#[ORM\Column]
#[ORM\Id]
#[ORM\GeneratedValue]
private ?int $id = null;
/**
* @var string
*/
#[ORM\Column(name: 'short_name', type: 'string', length: 255, unique: true)]
private $shortName;
/**
* @var string
*/
#[ORM\Column(name: 'name', type: 'string', length: 255, unique: true)]
private $name;
#[ORM\JoinColumn(name: 'field_of_study_group_id', referencedColumnName: 'id', nullable: false)]
#[ORM\ManyToOne(targetEntity: FieldOfStudyGroup::class, inversedBy: 'fieldOfStudies')]
private ?FieldOfStudyGroup $fieldOfStudyGroup;
#[ORM\OneToMany(mappedBy: 'fieldOfStudy', targetEntity: StudiesProgram::class)]
private Collection $studiesPrograms;
/**
* @var Collection<int, Lecturer>
*/
#[ORM\OneToMany(mappedBy: 'fieldOfStudy', targetEntity: Lecturer::class)]
private Collection $lecturers;
public function __construct()
{
$this->studiesPrograms = new ArrayCollection();
$this->lecturers = new ArrayCollection();
}
public function __toString()
{
return $this->name;
}
/**
* @return Collection<int, StudiesProgram>
*/
public function getStudiesPrograms(): Collection
{
return $this->studiesPrograms;
}
public function setStudiesPrograms($studiesPrograms)
{
$this->studiesPrograms = $studiesPrograms;
return $this;
}
public function getFieldOfStudyGroup(): ?FieldOfStudyGroup
{
return $this->fieldOfStudyGroup;
}
public function setFieldOfStudyGroup(?FieldOfStudyGroup $fieldOfStudyGroup): static
{
$this->fieldOfStudyGroup = $fieldOfStudyGroup;
return $this;
}
public function getId(): ?int
{
return $this->id;
}
public function setName(string $name): static
{
$this->name = $name;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function getShortName(): ?string
{
return $this->shortName;
}
public function setShortName(string $shortName): static
{
$this->shortName = $shortName;
return $this;
}
public function addStudiesProgram(StudiesProgram $studiesProgram): static
{
if (!$this->studiesPrograms->contains($studiesProgram)) {
$this->studiesPrograms->add($studiesProgram);
$studiesProgram->setFieldOfStudy($this);
}
return $this;
}
public function removeStudiesProgram(StudiesProgram $studiesProgram): static
{
if ($this->studiesPrograms->removeElement($studiesProgram)) {
// set the owning side to null (unless already changed)
if ($studiesProgram->getFieldOfStudy() === $this) {
$studiesProgram->setFieldOfStudy(null);
}
}
return $this;
}
public function getDisplayName(): string
{
return sprintf('%s (%s)', $this->name, $this->getFieldOfStudyGroup()->getName()); // e.g., "Mathematics (MATH)"
}
/**
* @return Collection<int, Lecturer>
*/
public function getLecturers(): Collection
{
return $this->lecturers;
}
public function addLecturer(Lecturer $lecturer): static
{
if (!$this->lecturers->contains($lecturer)) {
$this->lecturers->add($lecturer);
$lecturer->setFieldOfStudy($this);
}
return $this;
}
public function removeLecturer(Lecturer $lecturer): static
{
if ($this->lecturers->removeElement($lecturer)) {
// set the owning side to null (unless already changed)
if ($lecturer->getFieldOfStudy() === $this) {
$lecturer->setFieldOfStudy(null);
}
}
return $this;
}
}