Используя 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
Спасибо заранее за любую помощь!