【问题标题】:Laravel Many to Many relationship gets partial resultsLaravel 多对多关系得到部分结果
【发布时间】:2017-10-03 03:55:30
【问题描述】:

我有课程和类别模型,它们之间存在多对多关系。所以我创建了 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 的结果,而不是课程的结果。我正在学习laravel。有人可以帮忙吗?在我看来,我想显示属于某个类别的所有课程。 这是我的视图代码:

@foreach($courses as $course)
  {{$course->title}}
@endforeach

【问题讨论】:

    标签: php laravel many-to-many


    【解决方案1】:

    您必须将代码更改为:

    class Category extends Model
      {
       protected $title = ['title'];
    
       public function courses()
       {
         return $this->belongsToMany('App\Course', 'category_course', 'category_id', 'course_id');
       }
    }
    

    关系应仅在类别中。

    然后你调用:

    $courses = $categories->courses;
    

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 2021-01-27
      • 1970-01-01
      • 2023-03-31
      • 2015-04-23
      相关资源
      最近更新 更多