*/ public const VALID_REGISTRATION_TYPES = [ self::REG_LESSON, self::REG_ENROLLMENT ]; public function __construct( public readonly int $questionId, public readonly string $registrationType, public readonly int $registrationId, public readonly int $studentId, public readonly ?string $answerValue = null, public readonly ?int $id = null, ) {} public static function fromRow( \stdClass $row ): self { return new self( questionId: Val::int( $row->question_id ), registrationType: Val::string( $row->registration_type ), registrationId: Val::int( $row->registration_id ), studentId: Val::int( $row->student_id ), answerValue: Val::stringOrNull( $row->answer_value ), id: Val::int( $row->id ), ); } /** * Returns a plain array representation of the answer. * * @return array */ public function toArray(): array { return [ 'id' => $this->id, 'question_id' => $this->questionId, 'registration_type' => $this->registrationType, 'registration_id' => $this->registrationId, 'student_id' => $this->studentId, 'answer_value' => $this->answerValue, ]; } }