已解决-如何在Laravel视图中检索嵌套关系

已解决-如何在Laravel视图中检索嵌套关系,laravel,eloquent,laravel-blade,laravel-controller,Laravel,Eloquent,Laravel Blade,Laravel Controller,我对拉雷维尔不熟悉,但一路学习。。现在我有3张表格[课程、单元和课程] 课程有多个单元,每个单元有多个课程 数据库表如下所示: 课程 id crs_名称 单位 id 课程id 单元标题 课程 id 课程id 单元id 课程名称 关系定义如下: 单元模型 public function course(){return $this->belongsTo('App\Course');} public function lessons(){return $this->hasMany('Ap

我对拉雷维尔不熟悉,但一路学习。。现在我有3张表格[课程、单元和课程]

课程有多个单元,每个单元有多个课程

数据库表如下所示:

课程
id
crs_名称

单位
id
课程id
单元标题

课程
id
课程id
单元id
课程名称

关系定义如下: 单元模型

public function course(){return $this->belongsTo('App\Course');}
public function lessons(){return $this->hasMany('App\Lesson');}
课程模式

public function units(){return $this->hasMany('App\Unit');}
public function lessons(){return $this->hasMany('App\Lesson');}
课程模式

public function course(){return $this->belongsTo('App\Course');}
public function unit(){return $this->belongsTo('App\Unit');}
这是我的控制器[我确定问题在这里,因为我无法定义嵌套关系]

    public function singleCourse($id)
{ 
    $course = Course::find($id);
    $reviews = Review::where('course_id', $id)->orderBy('created_at', 'desc')->take(30)->paginate(10);
    $lessons = Lesson::where('course_id', $id)->take(15);
    $units = Unit::with('lessons')->where('course_id', $id)->take(15);
    return view('courses.course', compact('course', 'reviews', 'lessons', 'units'));
}

在我看来,我成功地检索了课程单元,但无法获取每个单元的课程,当我尝试其他任何东西时,我会出错

我的看法

@foreach($course->units as $unit)
                      <div class="card">
                        <div class="card-header">
                          <h3 class="accordion-heading">
                            <a href="#shippingOptions" role="button" data-toggle="collapse" aria-expanded="true" aria-controls="shippingOptions">
                              <i class="fas fa-bookmark"></i>
                               {{$unit->unit_title}}<span class="accordion-indicator"></span>
                            </a>
                          </h3>
                        </div>
                        <div class="collapse show" id="shippingOptions" data-parent="#productPanels">
                        @foreach($unit->lessons as $lesson)

                          <div class="card-body font-size-sm">
                            <div class="d-flex justify-content-between border-bottom pb-2">                           
                              <div>
                                <div class="font-weight-semibold text-dark"><i class="czi-video"></i> {{{$lesson->lesson_title}}}</div>
                                <div class="font-size-sm text-muted"><i class="far fa-clock"></i> 1h 20m</div>
                              </div>

                            </div>

                          </div>
                          @endforeach
                        </div>
                      </div>
                      @endforeach
@foreach($course->单位为$unit)
@foreach($unit->课程作为$Lessure)
{{{$lesson->lesson_title}}
1h 20米
@endforeach
@endforeach

非常感谢您对控制器的任何帮助,并在您的控制器中查看

,当我们重定向到新URL并将数据闪烁到会话时,您只需做一些更改,因为使用进行。因此,您可以将控制器替换为以下内容:

public function singleCourse($id)
{ 
    $course = Course::with(['lessons', 'units'])->find($id);
    $reviews = Review::where('course_id', $id)->orderBy('created_at', 'desc')->take(30)->paginate(10);
    $lessons = $course->lessons()->take(15);
    $units = $course->units()->take(15);
    return view('courses.course', compact('course', 'reviews', 'lessons', 'units');
}
要获得单元课程,您必须在单元模型中定义一个关系:

public function lessons()
{
   return $this->hasMany('App\Lesson');
}
要获得特定的单元课程,您必须在刀片中完成:

$unit->lessons
此处,您的刀片文件查找代码为:

@foreach($course->units as $unit)
<div class="card">
<div class="card-header">
  <h3 class="accordion-heading">
    <a href="#shippingOptions" role="button" data-toggle="collapse" aria-expanded="true" aria-controls="shippingOptions">
      <i class="fas fa-bookmark"></i>
       {{$unit->unit_title}}<span class="accordion-indicator"></span>
    </a>
  </h3>
</div>
<div class="collapse show" id="shippingOptions" data-parent="#productPanels">
@foreach($unit->lessons as $lesson)

  <div class="card-body font-size-sm">
    <div class="d-flex justify-content-between border-bottom pb-2">                           
      <div>
        <div class="font-weight-semibold text-dark"><i class="czi-video"></i> {{{$lesson->lesson_title}}}</div>
        <div class="font-size-sm text-muted"><i class="far fa-clock"></i> 1h 20m</div>
      </div>

    </div>

  </div>
  @endforeach
</div>
</div>
@endforeach
@foreach($course->单位为$unit)
@foreach($unit->课程作为$Lessure)
{{{$lesson->lesson_title}}
1h 20米
@endforeach
@endforeach

Hello Vinot谢谢,我应该如何在blade视图中检索属于特定单元的课程?我做了所有更改并添加了foreach单元课程,但得到了相同的旧错误[为foreach提供的参数无效]请使用您所做的更改更新您的问题。更新完成日期请将
课程
关系方法添加到
单元
模型。