Коллекция Laravel Определите, существует ли связь между многими - PullRequest
0 голосов
/ 04 мая 2018

Используя Laravel 5.6, я имею отношение многие ко многим между Пользователем и Оценкой (тест), с сводной таблицей, называемой «попытки». Я пытаюсь пройтись по всем моим оценкам и определить, прошел ли пользователь или нет (из-за того, что не прошел или не прошел оценку (отсутствие отношений)).

Я пытаюсь использовать метод «содержащий», но, вероятно, неправильно его использую.

В моем файле модели User.php у меня есть следующее, что не работает правильно:

/*
* Relationship between User and Assessments
*/
public function assessments(){
    return $this->belongsToMany('App\Models\Assessment', 'attempts', 'user_id', 'assessment_id')->withPivot('is_passing', 'score');
}

/*
* Get all Assessments but determine if a user has passed them or not
*/
public function getPassOrFailAttribute() {
    $passed = $this->assessments->where('pivot.is_passing', 1);
    $assessments = Assessment::all();
    foreach($assessments as $assessment) {
        // *** This is the part that doesn't seem to be working correctly ***
        $assessment['passorfail'] = $assessment->contains('id', $passed->id);
    }
    return $assessments;
}

В конечном итоге я хочу пройтись по всем оценкам в моем блэйд-представлении и по-разному оформить вывод в зависимости от того, прошел пользователь или не прошел, например:

@foreach($user->passOrFail as $assessment)
    @if($assessment->passorfail)
        <div class="panel-block">
            {{ $assessment->name}}
        </div>
    @else
        <a href="{{ route('visitor.assessments.show', $assessment) }}" class="panel-block">
            {{ $assessment->name}}
        </a>
    @endif
@endforeach

Спасибо заранее за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...