Laravel 多对多关系得到部分结果
Laravel Many to Many relationship gets partial results
我有课程和类别模型,它们之间存在多对多关系。所以我创建了 CategoryCourse 模型来分解关系。这是我的三个模型:
class CategoryCourse extends Model
{
private $foreignkeys = [
'$category_id','$course_id'
];
public function categories()
{
return $this->belongsToMany('App\Category');
}
public function courses()
{
return $this->belongsToMany('App\Course');
}
}
class Category extends Model
{
protected $title = ['title'];
public function categorycourse()
{
return $this->hasMany('App\CategoryCourse');
}
}
class Course extends Model
{
protected $fillable = [
'title', 'desc'
];
public function categorycourse()
{
return $this->hasMany('App\CategoryCourse');
}
}
在我的控制器中,我有如下方法:
public function getCoursesByCategory(Request $request, $id)
{
$id = Hashids::decode($id);
$categories = Category::findOrFail($id[0]);
$courses = $categories->categorycourse()->get();
return view('courses',compact('courses'));
}
我在数据库中有三个表,它们是类别、课程和 category_courses。我的视图显示的是 category_courses 的结果,而不是课程的结果。我正在学习laravel。任何人都可以帮忙吗?在我看来,我想显示属于一个类别的所有课程。
这是我的查看代码:
@foreach($courses as $course)
{{$course->title}}
@endforeach
您必须将代码更改为:
class Category extends Model
{
protected $title = ['title'];
public function courses()
{
return $this->belongsToMany('App\Course', 'category_course', 'category_id', 'course_id');
}
}
关系应仅在类别中。
然后你打电话:
$courses = $categories->courses;
我有课程和类别模型,它们之间存在多对多关系。所以我创建了 CategoryCourse 模型来分解关系。这是我的三个模型:
class CategoryCourse extends Model
{
private $foreignkeys = [
'$category_id','$course_id'
];
public function categories()
{
return $this->belongsToMany('App\Category');
}
public function courses()
{
return $this->belongsToMany('App\Course');
}
}
class Category extends Model
{
protected $title = ['title'];
public function categorycourse()
{
return $this->hasMany('App\CategoryCourse');
}
}
class Course extends Model
{
protected $fillable = [
'title', 'desc'
];
public function categorycourse()
{
return $this->hasMany('App\CategoryCourse');
}
}
在我的控制器中,我有如下方法:
public function getCoursesByCategory(Request $request, $id)
{
$id = Hashids::decode($id);
$categories = Category::findOrFail($id[0]);
$courses = $categories->categorycourse()->get();
return view('courses',compact('courses'));
}
我在数据库中有三个表,它们是类别、课程和 category_courses。我的视图显示的是 category_courses 的结果,而不是课程的结果。我正在学习laravel。任何人都可以帮忙吗?在我看来,我想显示属于一个类别的所有课程。 这是我的查看代码:
@foreach($courses as $course)
{{$course->title}}
@endforeach
您必须将代码更改为:
class Category extends Model
{
protected $title = ['title'];
public function courses()
{
return $this->belongsToMany('App\Course', 'category_course', 'category_id', 'course_id');
}
}
关系应仅在类别中。
然后你打电话:
$courses = $categories->courses;