如何找到Eloquent查询的逆

时间:2015-03-20 16:11:49

标签: laravel laravel-4 eloquent

我有一个查询,以查找特定活动中的注册学生。在用户模型上:

public function enrolledStudents($activity)
{ 
    $students = $activity->students()
        ->wherePivot('user_id', $this->id)
        ->get();
    return $students;
}

活动模型的students方法是这样的:

public function students()
{
    return $this->belongsToMany('Student', 'activity_student', 'activity_id', 'student_id')
        ->withPivot('user_id')
        ->withTimestamps();
}

我想要另一种方法来查找参加此活动的学生 - 我该怎么办呢?

即。 $用户>学生() - > notEnrolled($活性)

1 个答案:

答案 0 :(得分:2)

基本上,你必须来自Student角度。像这样:

$students = Student::whereDoesntHave('activities', function($q) use ($activity){
    $q->where('activity_id', $activity->id);
})->get();

请注意,此方法很新,因此您可能需要使用composer udpate更新Laravel