问题描述
我有 3 张桌子;一个用于课程,一个表用于类,另一个表用于类别,其中类别可以有多个类。我想显示带有 classe_name 和 category_name 的课程列表。 我在类和类别之间制作了数据透视表,其中还包含课程名称,但我无法从表格类别中显示 catgory_name,我不知道这是否是正确的方法
public function index()
{
$categories=Course_category::all();
return view('teacher.courses')->with('categories',$categories);
}
刀片
@foreach ($categories->classe as $item)
{{$item->category_name}}
@endforeach
类别模型
protected $table = 'categories';
protected $fillable =['id','category_name','categorie_image'];
/**
* The roles that belong to the Course_category
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function classe(){
return $this -> belongsToMany('App\Classe','classe_categorie','categorie_id','classe_id');
}
类模型
protected $table = 'classes';
protected $fillable=['id','classe_name','classe_image'];
public function course_categorie() {
return $this -> belongsToMany('App\Course_category','classe_id','categorie_id');
}
解决方法
你应该遍历类,而不是类:
@foreach ($categories->classe as $item)
{{$item->category_name}}
@endforeach
应该是
@foreach ($categories as $item)
{{$item->classe->classe_name}}
{{$item->category_name}}
@endforeach
既然要显示类,为什么不收集控制器中的所有 Classe
并从那里开始?除非你想按类别分组,这很容易用 eloquent 完成。
感谢您的帮助,我找到了解决方案
$categories=Course_category::with('classe')->get();
我使用循环内循环进行集合
@foreach ($categories as $item)
{{-- {{$item->course_category->category_name}} --}}
@foreach ($item->classe as $cat)
{{$cat->course_name}}
{{$cat->classe_name}}
@endforeach
@endforeach