【问题标题】:Multiple Laravel Eloquent Relationship多个 Laravel 雄辩的关系
【发布时间】:2017-10-17 22:58:32
【问题描述】:



我被堆积在 laravel 雄辩的关系中。这是场景:

我的数据库中有4 tables:
Categories,
Courses,
Lessons,和
Lesson_items.

我有3 more tables:
category_course,
course_lesson,和
lesson_item_lesson.

现在,我有这些代码:

Category.php - 型号

class Category extends Model
{
    public function courses(){
        return $this->belongsToMany('App\Course');
    }
}


routes.php - 路线

Route::get('/category/{id}', [
    'uses' => 'LearnController@getCategories'
]);


MyController.php - 控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Category;
use App\Lesson;

class LearnController extends Controller
{
    public function getCategories($id){
        $categories = Category::find($id);
        $lessons = Lesson::find($categories);
        return view('categories', compact('categories', 'lessons'));
    }
}



现在,我想要的结果是这样的:



真的需要你们的帮助。

【问题讨论】:

    标签: laravel-5 model eloquent relationship


    【解决方案1】:

    你需要nested eager laoding

    Category.php

    class Category extends Model
    {
        public function courses(){
            return $this->belongsToMany('App\Course');
        }
    }
    

    Course.php

    class Course extends Model
    {
        public function lessons(){
            return $this->belongsToMany('App\Lesson');
        }
    }
    

    Lesson.php

    class Lesson extends Model
    {
        public function lessonItems(){
            return $this->belongsToMany('App\LessonItem');
        }
    }
    

    LessonItem.php

    class LessonItem extends Model
    {
        public function lessons(){
            return $this->belongsToMany('App\Lesson');
        }
    }
    

    然后在控制器中

    class LearnController extends Controller
    {
        public function getCategories($id){
            $categories = Category::with('courses.lessons.lessonItems')->find($id);
            return view('categories', compact('categories'));
        }
    }
    

    编辑

    你需要某种这种结构

    @foreach ($category->courses as $course) {
        @foreach ($course->lessons as $lesson) {
            @foreach ($lesson->lessonItems as $item) {
    
            @endforeach
        @endforeach
    @endforeach
    

    【讨论】:

    • 在Lesson.php和LessonItem.php,他们有同样的方法吗? courses() ?
    • 抱歉,打错了
    • 等一下,先生。课程现在正在运行。如何访问课程和课程项目?循环遍历
    • 哇!男人们,你太棒了。我可以稍后再问你,如果我还有麻烦吗?非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2016-11-26
    • 2015-03-14
    • 2018-11-28
    • 2015-01-11
    • 2021-06-03
    相关资源
    最近更新 更多