Согласно вашей структуре таблицы one teacher has many students
.Следовательно, вместо использования соединения вы можете использовать отношения laravel с hasMany
:
У учителя много учеников - Teacher
Модель:
public function students(){
return $this->hasMany(Students::class);
}
Ученик принадлежит учителю - Student
Модель:
public function teacher(){
return $this->belongsTo(Teacher::class);
}
Теперь вы можете получить отношения, как показано ниже:
Получить всех учителей со своими учениками:
$teachers = Teacher::with('students')->get();
Получить всех учеников конкретного учителя:
$teacher = Teacher::find($teacherId);
$students = $teacher->students;
Наконец, используя это, вы можете преобразовать это:
$vu_data = Teacher::join('Students', 'teachers.id', '=', 'students.teacher_id')
->where('teachers.id', $id)
->get();
return view('view_full')->with('vu_data',$vu_data);
В это:
$teacher = Teacher::find($id);
return view('view_full', compact('teacher'));
Тогда внутри лезвия:
Вы можетеполучить данные учителя: {{ $teacher->name }}
и учеников:
@if($teacher->students->count() > 0)
@foreach($teacher->students as $student)
{{ $student->name }}
@endforech
@endif