0])] public int $ordering; #[ORM\Column(type: Types::STRING, length: 255)] public string $question; #[ORM\JoinColumn(nullable: false)] #[ORM\ManyToOne(inversedBy: 'questions')] public Quiz $quiz; #[ORM\Column] public bool $enabled = true; /** @var Collection */ #[ORM\OneToMany(targetEntity: Answer::class, mappedBy: 'question', cascade: ['persist'], orphanRemoval: true)] #[ORM\OrderBy(['ordering' => 'ASC'])] public private(set) Collection $answers; public function __construct() { $this->answers = new ArrayCollection(); } public function addAnswer(Answer $answer): static { if (!$this->answers->contains($answer)) { $this->answers->add($answer); $answer->question = $this; } return $this; } public function getErrors(): ?string { if (0 === \count($this->answers)) { return 'This question has no answers'; } $correctAnswers = $this->answers->filter(static fn (Answer $answer): bool => $answer->isRightAnswer)->count(); if (0 === $correctAnswers) { return 'This question has no correct answers'; } if ($correctAnswers > 1) { return 'This question has multiple correct answers'; } return null; } }