#laravel #many-to-many #laravel-relations
Вопрос:
У меня есть 3 таблицы: одна для курсов и таблица для классов, другая таблица для категорий, в которых категории могут иметь несколько классов. Я хочу показать список курсов с именем класса и именем категории. Я создаю сводную таблицу между классами и категориями, которая также содержит название курса, но я не могу показать 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 IlluminateDatabaseEloquentRelationsBelongsToMany
*/
public function classe(){
return $this -> belongsToMany('AppClasse','classe_categorie','categorie_id','classe_id');
}
классная модель
protected $table = 'classes';
protected $fillable=['id','classe_name','classe_image'];
public function course_categorie() {
return $this -> belongsToMany('AppCourse_category','classe_categorie','classe_id','categorie_id');
}
Ответ №1:
Вы должны перебирать классы, а не категории:
@foreach ($categories->classe as $item)
{{$item->category_name}}
@endforeach
Это должно быть
@foreach ($categories as $item)
{{$item->classe->classe_name}}
{{$item->category_name}}
@endforeach
Поскольку вы хотите показать классы, почему бы вам не собрать все Classe
s в контроллере и не начать оттуда? Если только вы не хотите группироваться по категориям, что легко сделать с красноречивыми.
Комментарии:
1. я хочу показать имя курса из сводной таблицы с именем категории из модели категории и именем класса из модели класса модель класса не содержит имени catgeory
2. Свойство [имя_класса] не существует в этом экземпляре коллекции
Ответ №2:
спасибо вам за вашу помощь, я нашел решение
$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