одна страница в Laravel - PullRequest
0 голосов
/ 25 октября 2018

Я работаю с Laravel v5.7!
У меня есть CourseController, который контролирует все, что касается Курсов.все было хорошо, но теперь у меня есть проблема.на моей единственной странице курсов любой заголовок или .. вернул ноль.

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.

Пожалуйста, помогите мне, если сможете!ThankYou

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Это вернет первый курс с его комментариями, и вы можете позвонить $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'));
}

ИЛИ

Это вернет все курсы, которые имеют одобренные комментариии 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
0 голосов
/ 25 октября 2018

В настоящее время вы перезаписываете переменную $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'));
}
...