2017-05-04 9 views
1

私は、それらの間に多くの関係があるコースとカテゴリモデルを持っています。そこで私はCategoryCourse Modelを作成して関係を分解しました。次のように私はメソッドを持って私のコントローラでLaravel多対多関係は部分的な結果を得ます

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'); 
    } 
} 

:ここに私の3つのモデルです

public function getCoursesByCategory(Request $request, $id) 
{ 
    $id = Hashids::decode($id); 
    $categories = Category::findOrFail($id[0]); 
    $courses = $categories->categorycourse()->get(); 
    return view('courses',compact('courses')); 
} 

私は、データベース内の3つのテーブルを持って、彼らは、カテゴリ、コースやcategory_coursesです。私の見解では、category_coursesの結果は表示されていますが、コースの結果は表示されません。私はララベルを学んでいます。誰でも助けてくれますか?私は、カテゴリに属する​​すべてのコースを私の見解で表示したいと思います。関係は唯一のカテゴリにする必要があります

class Category extends Model 
    { 
    protected $title = ['title']; 

    public function courses() 
    { 
    return $this->belongsToMany('App\Course', 'category_course', 'category_id', 'course_id'); 
    } 
} 

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

答えて

1

あなたがあなたのコードを変更する必要があります。 は、ここに私のビューのコードです。

そして、あなたが呼び出す:

$courses = $categories->courses;