src/Entity/Core/Classroom/ClassroomStudent.php line 16

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity\Core\Classroom;
  4. use App\Entity\User\User;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Doctrine\ORM\PersistentCollection;
  7. use JsonSerializable;
  8. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  9. #[ORM\Table('classroom_student')]
  10. #[ORM\Entity(repositoryClass: \App\Entity\Core\Classroom\ClassroomStudentRepository::class)]
  11. #[UniqueEntity(fields: ['student', 'classroom'], errorPath: 'classroom', message: 'Student is already in the classroom')]
  12. class ClassroomStudent implements JsonSerializable
  13. {
  14. #[ORM\Column(name: 'id', type: 'integer')]
  15. #[ORM\Id]
  16. #[ORM\GeneratedValue(strategy: 'AUTO')]
  17. private int $id;
  18. #[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
  19. #[ORM\ManyToOne(targetEntity: \App\Entity\User\User::class, fetch: 'EAGER', cascade: ['persist'])]
  20. private User $student;
  21. #[ORM\JoinColumn(name: 'classroom_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
  22. #[ORM\ManyToOne(targetEntity: \App\Entity\Core\Classroom\Classroom::class, inversedBy: 'members')]
  23. private Classroom $classroom;
  24. #[ORM\ManyToMany(targetEntity: \App\Entity\Core\Peer\PeerUnit::class, mappedBy: 'students')]
  25. private PersistentCollection $peerUnits;
  26. public function getId(): int
  27. {
  28. return $this->id;
  29. }
  30. public function setStudent(User $student): ClassroomStudent
  31. {
  32. $this->student = $student;
  33. return $this;
  34. }
  35. public function getStudent(): User
  36. {
  37. return $this->student;
  38. }
  39. public function setClassroom(Classroom $classroom): ClassroomStudent
  40. {
  41. $this->classroom = $classroom;
  42. return $this;
  43. }
  44. public function getPeerUnits(): PersistentCollection
  45. {
  46. return $this->peerUnits;
  47. }
  48. public function getClassroom(): Classroom
  49. {
  50. return $this->classroom;
  51. }
  52. public function jsonSerialize(): mixed
  53. {
  54. return [
  55. "id" => $this->getId(),
  56. "student" => $this->getStudent(),
  57. "peerUnits" => $this->getPeerUnits()
  58. ];
  59. }
  60. }