Skip to main content

Overview

The Grade model manages student grades, providing methods for recording grades and retrieving grade information in various formats. File: app/models/Grade.php

Methods

getStudentsByCourse

Retrieves all students enrolled in a course along with their grades (if any).
course_id
int
required
Course ID to get students for
SQL Query:
SELECT students.id, users.name, grades.grade
FROM enrollments
JOIN students ON enrollments.student_id = students.id
JOIN users ON students.id = users.id
LEFT JOIN grades 
  ON grades.student_id = students.id 
 AND grades.course_id = enrollments.course_id
WHERE enrollments.course_id = ?
result
array
Returns array of students with their grades for the course
Example:
$grade = new Grade();
$students = $grade->getStudentsByCourse(12);
Uses LEFT JOIN to include students who haven’t received grades yet (grade will be null).

save

Saves or updates a grade for a student in a specific course.
student_id
int
required
Student ID
course_id
int
required
Course ID
grade
float
required
Grade value to save
SQL Query:
REPLACE INTO grades (student_id, course_id, grade)
VALUES (?, ?, ?)
result
void
No return value (throws exception on failure)
Example:
$grade = new Grade();
$grade->save(15, 12, 95.5); // Student 15, Course 12, Grade 95.5
Uses REPLACE INTO which updates the grade if it already exists, or inserts a new record if it doesn’t.

getStudentGrades

Retrieves all grades for a specific student with subject information.
student_id
int
required
Student ID to get grades for
SQL Query:
SELECT subjects.name AS subject, grades.grade
FROM grades
JOIN courses ON grades.course_id = courses.id
JOIN subjects ON courses.subject_id = subjects.id
WHERE grades.student_id = ?
result
array
Returns array of grades with subject names
Example:
$grade = new Grade();
$studentGrades = $grade->getStudentGrades(15);

getBulletinData

Retrieves comprehensive grade information for a student including subject, teacher, and grade.
student_id
int
required
Student ID to get bulletin data for
SQL Query:
SELECT 
    subjects.name AS subject,
    users.name AS teacher,
    grades.grade
FROM grades
JOIN courses ON grades.course_id = courses.id
JOIN subjects ON courses.subject_id = subjects.id
JOIN users ON courses.teacher_id = users.id
WHERE grades.student_id = ?
result
array
Returns array of grade records with full details
Example:
$grade = new Grade();
$bulletinData = $grade->getBulletinData(15);
This method is typically used for generating student report cards or academic bulletins.

getGradesByStudent

Retrieves all grades for a student with subject and teacher information (identical to getBulletinData).
student_id
int
required
Student ID to get grades for
SQL Query:
SELECT 
    subjects.name AS subject,
    users.name AS teacher,
    grades.grade
FROM grades
JOIN courses ON grades.course_id = courses.id
JOIN subjects ON courses.subject_id = subjects.id
JOIN users ON courses.teacher_id = users.id
WHERE grades.student_id = ?
result
array
Returns array of grade records with full details
Example:
$grade = new Grade();
$allGrades = $grade->getGradesByStudent(15);

Build docs developers (and LLMs) love