【发布时间】:2021-01-07 09:05:33
【问题描述】:
我是 laravel 的新手,但一直在学习。现在我有 3 个表 [课程、单元和课程]
课程有多个单元,每个单元有多个课程
数据库表看起来像这样:
课程
身份证
crs_name
..
单位
身份证
course_id
unit_title
课程
身份证
course_id
unit_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'));
}
在我看来,我设法检索了课程单元,但无法获得每个单元的课程,当我尝试其他任何内容时,我得到了错误 enter image description here
我的观点
@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
非常感谢控制器和视图方面的任何帮助
【问题讨论】:
标签: laravel eloquent laravel-blade laravel-controller