Проблемы с получением завершенных курсов - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в Laravel 6 и создаю приложение для студентов. Таблицы моей базы данных выглядят следующим образом:

$ courses -program_id -title

$ projects -user_id -course_id -title -completed -comments

У меня есть два пользователя с разные права (администратор и участник). Пользователь Admin может решить, завершен ли проект или нет (флажок). Каждый проект принадлежит к курсу (course_id).

У меня есть success.blade. php, который выглядит следующим образом:

@extends('layouts/app')

@section('content')

<div class="row justify-content-center">
    <div class="jumbotron col-8">
        <h4 class="display-4">{{ __('Finished Projects') }}</h4>
        <ol>
        @foreach(Auth::user()->projects as $project)
            @if($project->comments)
                @if($project->completed === 1)

                    <li>{{ $project->title }}</li>

                @endif
            @endif
        @endforeach
        </ol>
        <a href="/home" class="btn btn-info">{{ __('Back')}}</a>
    </div>
</div>
@endsection

Этот файл возвращает завершенные проекты, но я хотел бы вместо этого получить курсы завершенных проектов. Как я могу решить это?

Мой метод контроллера выглядит следующим образом:


public function success()
    {

        $programs = Program::orderBy('name')->get();
        $courses = Course::orderBy('title')->get();
        $projects = Project::orderBy('title')->get();

        return view('/success', [
            'programs'  => $programs,
            'courses'   => $courses,
            'projects'  => $projects
        ]);
    }

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Использование отношений

https://laravel.com/docs/7.x/eloquent-relationships

// From controller you can do 
$courses = Course::whereHas('project', function($q){
   $q->where('completed', true);
})->get();



// Also this way
$completedProjects = Project::where('completed', true)->get();


// Blade view
@foreach($completedProjects as $project)

  @foreach($project->courses as $course)
      {{ $course->title }}
  @endforeach

@endforeach
0 голосов
/ 16 апреля 2020

вы можете получить доступ к желаемому курсу с этим запросом для каждого проекта, который завершен :

$course = Course::find($project['course_id']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...