Mysql Laravel 6多对多关系
在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,当我想看
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:还没有测试过,如果不起作用,请告诉我