0

我有两个模型,学校和学生的关系是,学校有很多学生//学生模型

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

和学校模型一样,下面是关系的函数

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

现在我有一个显示页面,我喜欢显示以下信息。(school_name,school_code) 来自学校表和学生信息全部来自学生表。如果我传递为,则在学生控制器中使用 show 函数

 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 的按钮,它会失败,如何编写 Join 查询以从学校表中获取 school_code 和 school_name。

4

3 回答 3

2

不知道为什么您使用相同的$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]); 
}

使用此代码

于 2020-06-30T14:50:45.420 回答
0

你的模型应该是这样的

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

你必须像这样改变。

$student = Student::find($id);
$school  = $student->school;
于 2020-06-30T14:52:24.213 回答
0

由于您已经设置了关系,您可以使用 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
于 2020-06-30T15:04:33.417 回答