<?php
namespace CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use JsonSerializable;
use UserBundle\Entity\User;
/**
* @ORM\Table("classroom_student")
* @ORM\Entity(repositoryClass="CoreBundle\Entity\ClassroomStudentRepository")
* @UniqueEntity(
* fields={"student", "classroom"},
* errorPath="classroom",
* message="Student is already in the classroom"
* )
*/
class ClassroomStudent implements JsonSerializable
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User",fetch="EAGER", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $student;
/**
* @var Classroom
*
* @ORM\ManyToOne(targetEntity="Classroom", inversedBy="members")
* @ORM\JoinColumn(name="classroom_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $classroom;
/**
* @ORM\ManyToMany(targetEntity="CoreBundle\Entity\PeerUnit", mappedBy="students")
*/
private $peerUnits;
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set student.
*
* @param User $student
*
* @return ClassroomStudent
*/
public function setStudent($student)
{
$this->student = $student;
return $this;
}
/**
* Get student.
*
* @return User
*/
public function getStudent()
{
return $this->student;
}
/**
* Set classroom.
*
* @param Classroom $classroom
*
* @return ClassroomStudent
*/
public function setClassroom($classroom)
{
$this->classroom = $classroom;
return $this;
}
public function getPeerUnits()
{
return $this->peerUnits;
}
/**
* @return Classroom
*/
public function getClassroom()
{
return $this->classroom;
}
public function jsonSerialize(): mixed
{
return [
"id" => $this->getId(),
"student" => $this->getStudent(),
"peerUnits" => $this->getPeerUnits()
];
}
}