belongsTo(Student::class); } public function audition(): BelongsTo { return $this->belongsTo(Audition::class); } public function school(): HasOneThrough { return $this->hasOneThrough( School::class, Student::class, 'id', 'id', 'student_id', 'school_id'); } public function scoreSheets(): HasMany { return $this->hasMany(ScoreSheet::class); } /* * Ensures score_sheets_count property is always available */ public function getScoreSheetsCountAttribute() { if (!isset($this->attributes['score_sheets_count'])) { $this->attributes['score_sheets_count'] = $this->scoreSheets()->count(); } return $this->attributes['score_sheets_count']; } }