在 laravel 5.6 中显示特定的列名称
Display specific column name in laravel 5.6
我正在使用 laravel 5.6。我有两张桌子。一个是 Teachers(id,name,email,salary) 另一个是 Students(id,teacher_id,name,email) 我有加入了 2 个表
$vu_data = Teacher::join('Students', 'teachers.id', '=', 'students.teacher_id')
->where('teachers.id', $id)
->get();
return view('view_full')->with('vu_data',$vu_data);
view_full.blade.php
{{$vu_data[0]->name}}
如何显示学生姓名和教师姓名。有相同的列名。
提前致谢
需要在->get()之前添加
->select('Teachers.name as teacherName', 'Students.name as studentName')
而且你可以使用
{{$vu_data[0]->teacherName}}
和
{{$vu_data[0]->studentName}}
您需要在查询的 select()
子句中指定列,并重命名这些列。比如
Teacher::join('Students', 'teachers.id', '=', 'students.teacher_id')
->where('teachers.id', $id)
->select('teachers.name AS teacher_name', 'students.name AS student_name', [ rest of columns])
->get();
但是,您可能需要查看 Eloquent relationships,这将允许您遍历一位教师,然后遍历该教师的所有学生,反之亦然。
更好的方法是使用 laravel Eloquent 关系 https://laravel.com/docs/5.7/eloquent-relationships#one-to-many*。
穿上你的教师模型
public function students(){
return $this->hasMany('App\Students', 'teacher_id', 'id');
}
你会这样称呼:
$vu_data->students()
如果您想使用您的 select,只需使用 de 'AS'
->select('Teachers.name as teacher_name', 'Students.name as student_name')
根据您的 table 结构 one teacher has many students
。因此,您可以使用 laravel 与 hasMany
的关系,而不是使用 join :
老师有很多学生 - 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'));
然后在 blade 里面:
您可以获得老师的详细信息:{{ $teacher->name }}
和学生:
@if($teacher->students->count() > 0)
@foreach($teacher->students as $student)
{{ $student->name }}
@endforech
@endif
我正在使用 laravel 5.6。我有两张桌子。一个是 Teachers(id,name,email,salary) 另一个是 Students(id,teacher_id,name,email) 我有加入了 2 个表
$vu_data = Teacher::join('Students', 'teachers.id', '=', 'students.teacher_id')
->where('teachers.id', $id)
->get();
return view('view_full')->with('vu_data',$vu_data);
view_full.blade.php
{{$vu_data[0]->name}}
如何显示学生姓名和教师姓名。有相同的列名。
提前致谢
需要在->get()之前添加
->select('Teachers.name as teacherName', 'Students.name as studentName')
而且你可以使用
{{$vu_data[0]->teacherName}}
和
{{$vu_data[0]->studentName}}
您需要在查询的 select()
子句中指定列,并重命名这些列。比如
Teacher::join('Students', 'teachers.id', '=', 'students.teacher_id')
->where('teachers.id', $id)
->select('teachers.name AS teacher_name', 'students.name AS student_name', [ rest of columns])
->get();
但是,您可能需要查看 Eloquent relationships,这将允许您遍历一位教师,然后遍历该教师的所有学生,反之亦然。
更好的方法是使用 laravel Eloquent 关系 https://laravel.com/docs/5.7/eloquent-relationships#one-to-many*。 穿上你的教师模型
public function students(){
return $this->hasMany('App\Students', 'teacher_id', 'id');
}
你会这样称呼:
$vu_data->students()
如果您想使用您的 select,只需使用 de 'AS'
->select('Teachers.name as teacher_name', 'Students.name as student_name')
根据您的 table 结构 one teacher has many students
。因此,您可以使用 laravel 与 hasMany
的关系,而不是使用 join :
老师有很多学生 - 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'));
然后在 blade 里面:
您可以获得老师的详细信息:{{ $teacher->name }}
和学生:
@if($teacher->students->count() > 0)
@foreach($teacher->students as $student)
{{ $student->name }}
@endforech
@endif