'date', 'is_active' => 'boolean', 'metadata' => 'json', 'synced_at' => 'datetime', ]; } public function violations(): HasMany { return $this->hasMany(Violation::class); } public function attendances(): HasMany { return $this->hasMany(Attendance::class); } public function spLetters(): HasMany { return $this->hasMany(SpLetter::class); } public function class() { return $this->belongsTo(Classes::class, 'class_id'); } public function parentLinks() { return $this->hasMany(\App\Models\ParentStudent::class, 'student_id'); } public function getTotalPointsAttribute(): int { return $this->violations() ->whereNull('deleted_at') ->sum('points'); } }