Laravel:检查关系

时间:2015-05-07 15:13:55

标签: laravel eloquent laravel-5 blade

请忍受我,我不善于解释事情,我不认为这个标题适合我的问题。

我有一个用户模型和一个课程模型。 这些模型有很多关系。

目前有4门课程,但用户只与其中2门课程有关系(比如课程1和3)。

在某个页面上,我想输出所有课程,并突出显示用户与之关系的课程,以便查看课程。因此,课程1和3将突出显示,而课程2和4将逐渐消失。

用户模型:

public function courses()
{
    return $this->belongsToMany('App\Course');
}

课程模型:

public function users()
{
    return $this->belongsToMany('App\User');
}

控制器

public function index()
{
    $member = $this->auth->user();
    $courses = $this->courserepository->getAllCourses(); // Course 1,2,3,4
    $member_courses = $member->courses; // Course 1,3

    // Logic to filter courses which are in a relationship with the User

    return view('member.course.index', compact('member', 'courses'));
}

我希望我有更多的代码,但我删除了大部分代码,因为它没有被怀疑的工作。我正在寻找有人指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

在控制器替换中:

$member = $this->auth->user()->with('courses');

然后在视图中:

<ul>
@foreach($courses as $course)
    <li@if(in_array($course['id'], array_column($member['courses'], 'id'))){{' class="highlighted"'}}@endif>
        {{$course->name}}
    </li>
@endforeach
</ul>