laravel中的单页

时间:2018-10-25 06:05:57

标签: laravel singlepage

我正在使用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的第一行。

如果可以,请帮助我!谢谢

2 个答案:

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