Search code examples
laraveleloquentlaravel-bladelaravel-query-builderlaravel-controller

Fetching data from two tables in Laravel in show function in controller?


I have two Model, School, and Student the relationship is, School has Many Student //Student Model

public function school()
    {
        return $this->belongsTo('App\School');
    }

and same in School Model the following is the function for relationship

public function student()
    {
        return $this->hasMany('App\Student');
    }

Now I have a show Page I like to display the following information. (school_name,school_code) from the school table and student information all from the Student Table.using show function in student controller if I pass as

 public function show($id)
        {
            $student=Student::find($id);
            $school=School::find($id);   
     return View::make('student.show')->with(['school'=> $school,'student'=>$student]); 
}

it gets data from school if school_id ==$id but one school has many students it fails if I click to show a button with an ID of 109, how to write the Join query to get school_code and school_name from schools table.


Solution

  • Not sure why you are using the same $id to getting student and school

    public function show($id)
    {
        $student = Student::find($id);
        $school = $student->school; //school of the student
        return View::make('student.show')->with(['school'=> $school,'student'=>$student]); 
    }
    

    Use this code