Mysql Laravel 6多对多关系

Mysql Laravel 6多对多关系,mysql,sql,laravel,eloquent,laravel-6,Mysql,Sql,Laravel,Eloquent,Laravel 6,在laravel 6中,我有两个模型 class Teacher { } class Students { } 我有第三个模型来连接表 class TeacherStudent { } 现在,我如何才能得到所有没有某个学生订阅的老师 例如: 老师1,老师2,老师3,老师4在教师桌上 和 学生1,学生2,学生3,学生4在学生桌上 学生1、教师1、教师2 学生2、教师1、教师4 学生和老师 在这里,正如学生1所记录的,当我想看到未订阅的教师时,我应该找教师3和教师4 作为学生4,当我想看

在laravel 6中,我有两个模型

class Teacher {

}

class Students {

}
我有第三个模型来连接表

class TeacherStudent {

}
现在,我如何才能得到所有没有某个学生订阅的老师

例如: 老师1,老师2,老师3,老师4在教师桌上 和 学生1,学生2,学生3,学生4在学生桌上

学生1、教师1、教师2 学生2、教师1、教师4 学生和老师

在这里,正如学生1所记录的,当我想看到未订阅的教师时,我应该找教师3和教师4
作为学生4,当我想看到未订阅的教师时,我应该得到所有教师,依此类推,我假设你已经定义了模型中的所有关系

// in your controller
$user = auth()->user();

// where 'students' is a many-to-many relationship you have in you Teacher model
$teachers = Teacher::whereDoesntHave('students', function($query) use($user) {
    return  $query
          ->where('user_id', $user->id);
});
上述查询将检索不属于当前已验证用户的所有教师

如果您尚未在模型中定义任何关系。它们应该是这样的:

// Teacher model
public function students() {
  // many to many relationship
  return $this->belongsToMany('App\Student', 'subscriber'); // replace subscribers with your pivot table
}
学生模型的一个例子:

// Student model
public function teachers() {
   // many to many relationship
   return $this->belongsToMany('App\Teacher', 'subscriber'); // replace subscribers with your pivot table
}
PS:还没有测试过,如果不起作用,请告诉我