在laravel 5.6中显示特定的列名称

时间:2019-02-21 18:05:24

标签: laravel laravel-5 eloquent laravel-5.6

我正在使用laravel 5.6。我有两张桌子。一个是老师(id,名称,电子邮件,薪水),另一个是学生(id,teacher_id,名称,电子邮件)我已加入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}}

如何显示学生姓名和老师姓名。列名相同。

预先感谢

4 个答案:

答案 0 :(得分:2)

更好的方法是使用laravel雄辩关系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()

如果要使用yur select,请简单地使用de'AS'

->select('Teachers.name as teacher_name', 'Students.name as student_name')

答案 1 :(得分:1)

您需要在查询的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,这将使您可以依次遍历一个老师,然后遍历该老师的所有学生,反之亦然。

答案 2 :(得分:0)

您需要在-> get()

之前添加
->select('Teachers.name as teacherName', 'Students.name as studentName')

并且您可以使用

{{$vu_data[0]->teacherName}}

{{$vu_data[0]->studentName}}

答案 3 :(得分:0)

按照您的表结构one teacher has many students。因此,您可以使用带有hasMany的laravel关系来代替使用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'));

然后在刀片内部:

您可以获取教师详细信息:{{ $teacher->name }}

和学生:

@if($teacher->students->count() > 0)

    @foreach($teacher->students as $student)
      {{ $student->name }} 
    @endforech

@endif