Laravel5 的多对多关系中,在 blade 模板里面如何循环输出其中一张表的字段,而且输出其关联对应的另外一张表的字段

对于项目(projects)和学生(students)这两张表,每个学生可以有多个项目,每个项目也可以由多个人来共同完成,所以又多加了一张关联表students_projects,现在我想要循环输出所有学生的姓名和学号,然后还要在每一条姓名学号下面输出这个学生所做过的项目,如果输出单独一个学生的项目列表,我可以像相关方文档说的那样,在控制器里通过类似于$roles = User::find(1)->roles的方式获得某一个学生的项目列表,但是对于循环输出学生的信息,而且输出学生对应的projects,应该怎么实现?
已邀请:

Jachase

赞同来自: Bell__orchid

Students.php

<?php namespace App\Models
use Illuminate\Database\Eloquent\Model;

class Students extends Model{
protected $table='students';

public function projects()
{
return $this->belongsToMany("App\Models\Projects", "students_projects", "student_id", "project_id");
}

===========
其中student_project为中间表,student_id和project_id为表students_projects的字段,其中student_id指向students.id,project_id指向projects.id

使用:在Students.php中

public function getAll()
{
return self::with('projects')->get();
}

================
控制器
public function getIndex()
{
$data = (new App\Models\Students)->getAll();
if($data->isEmpty())
$data =[];
else
$data = $data->toArray();
return view('xxx.index', ['data'=>$data]);
}

================
blade模板
@if(!empty($data))
@foreach($data as $item)
student.id:{{$item['id']}}<br/>
usstudentr.username:{{$item['username']}}<br/>

@if(!empty($item['projects']))
<b>Projects:</b>
  @foreach($item['projects'] as $_item)
     project.id:{{$_item['id']}}<br/>
     project.name:{{$_item['name']}}<br/>
  @endforeach
@endif
@endforeach()
@endif

要回复问题请先登录注册