在控制器的 show 函数中从 Laravel 中的两个表中获取数据?

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

我有两个Model, School, Student 关系是, School has Many Student //学生模型

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

和School Model一样下面是关系函数

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

现在我有一个显示页面,我想显示以下信息。 (school_name,school_code) 来自学校 table 和所有来自学生 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]); 
}

它从学校获取数据,如果 school_id ==$id 但一所学校有很多学生,如果我单击以显示 ID 为 109 的按钮,它会失败,如何编写加入查询以获取 school_code 和 school_name 来自学校 table.

不确定为什么要使用相同的 $id 来获取学生和学校

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]); 
}

使用此代码

你的模型应该是这样的

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

你要这样改

$student = Student::find($id);
$school  = $student->school;

由于您已经建立了关系,您可以使用 Eloquent 获取单个学生及其所属学校的数据,如下所示:

public function show($id)
{
  $student = Student::with('school')->where('id', $id)->first();
  return View::make('student.show')->compact('student); 

}

现在您可以检索数据 show.blade.php 如下:

@foreach($student as $stud)
  <li> {{ $stud->student_name}}</li>
  <li> {{ $stud->student_code}}</li>
  <li> {{ $stud->->school->school->name}}</li>
  <li> {{ $stud->school->school_name }}</li>
@ndforeach