我正在使用Laravel v5.7!
我有CourseController,它控制着Courses的所有事情。一切都还好,但是现在我有问题了。在我的单页课程中,任何标题或..返回的都是null。
public function single(Course $course)
{
$course = Course::get()->first();
$comments = $course->comments()
->where('approved', 1)
->where('parent_id', 0)->latest()
->with('comments')->get();
return view('Home.course', compact('course', 'comments'));
}
这是我的控制器代码。当我在所有单页页面上使用first()时,我的标题和图像都相同,.....,如果我删除first(),则会出现此错误:
方法Illuminate \ Database \ Eloquent \ Collection :: comments不存在。
我使用{{ $course->title }}
在单页中显示课程数据。
但对于所有子弹和课程,仅返回Db的第一行。
如果可以,请帮助我!谢谢
答案 0 :(得分:2)
这将返回带有注释的第一门课程,您可以直接在刀片中调用$course->title
。
public function single(Course $course)
{
$course = Course::with(['comments' => function($query){
$query->where('approved', 1)->where('parent_id', 0);
}])->fisrt();
$comments = $course->comments;
return view('Home.course', compact('course', 'comments'));
}
OR
这将返回所有已批准评论且parent_id = 0的课程,并且您必须在刀片中循环浏览课程:
控制器:
public function single(Course $course)
{
$courses = Course::with(['comments' => function($query){
$query->where('approved', 1)->where('parent_id', 0);
}])->get();
return view('Home.course', compact('courses'));
}
刀片:
@foreach($courses as $course)
{{ $course->title }}
$foreach($course->comments as $comment)
{{ $comment->id }}
@endforeach
@endforeach
答案 1 :(得分:1)
您当前正在用数据库中的第一个实例覆盖$course
变量。
public function single(Course $course)
{
// $course = Course::get()->first(); <- This gets the first Course also if you use first, don't use get
$comments = $course->comments
->where('approved', 1)
->where('parent_id', 0)
->latest()
->with('comments')
->get();
return view('Home.course', compact('course', 'comments'));
}