Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Webiondev123's avatar

Find all the examinations taken by a lecturer ?

Ok. I have three database:

examination. pk id lecturers. pk id exam_supervision: fk lecturer_id and exam_id

I want to join these tables to find all exam taken by the lecturer.

So if I implement hasMany method in examination and lecturer model:

examination model class:

 public function supervised()
    {
        return $this->hasMany('exam_supervision');
    }

lecturer model class:

 public function supervises()
    {
        return $this->hasMany('exam_supervision');
    }

then should I do this?


$examinationByLecturer = Exam_supervision::with('examination','lecturers, )->get();


I am confused about laravel syntax. Very confusion

0 likes
3 replies
tykus's avatar

The exam_supervision appears to be a pivot table representing a many-to-many relationship between Lecturer and Exam models. In this case, you would not need a model for the exam_supervision table, you could instead define belongsToMany relationships as follows:

// Lecturer.php
public function exams_supervised()
{
    return $this->belongsToMany(Exam::class, 'exam_supervision', 'lecturer_id', 'exam_id');
}
// Exam.php
public function supervisors()
{
    return $this->belongsToMany(Lecturer::class, 'exam_supervision', 'exam_id', 'lecturer_id');
}

Now, you using a Lecturer instance, you can get all exams supervised:

$lecturer->exams_supervised; // returns a Collection of Exam instances

and from an Exam instace, get the supervising lecturers:

$exam->supervisors; // returns a Collection of Lecturer instances
Webiondev123's avatar

How do I find the examinations based on lecturer id? Shouldn't I pass an id? Its returning empty


 public function lecturerViewExaminations($id)
  {
    
    
  $user=view()->share('user',Auth::user());
    $lecturer=DB::table('lecturers')->where('user_id', $user["id"])->first();
    // $exam=DB::table('exam_supervision')->where('lecturer_id',  $lecturer->id)->get();
    $lecturer_this = new Lecturers();

    $examinations=$lecturer_this->exams_supervised($lecturer->id); // returns a Collection of Exam instances
    
    return json_encode($examinations);
  }

Please or to participate in this conversation.