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

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