Php laravel多对多关系从数据透视表获取数据
我在用户和课堂模型之间有一种多对多的关系 结构如下:Php laravel多对多关系从数据透视表获取数据,php,laravel,eloquent,Php,Laravel,Eloquent,我在用户和课堂模型之间有一种多对多的关系 结构如下: - users - id - name - classroom_user - classroom_id - user_id - is_teacher - classrooms - id - name 这就是关系: 用户模型: public function classrooms() { return $this->belongsToMany(Classroom::class)->wi
- users
- id
- name
- classroom_user
- classroom_id
- user_id
- is_teacher
- classrooms
- id
- name
这就是关系:
用户模型:
public function classrooms() {
return $this->belongsToMany(Classroom::class)->withPivot('is_teacher');
}
课堂模式:
public function users() {
return $this->belongsToMany(User::class)->withPivot('is_teacher');
}
public function teachers() {
return $this->belongsToMany(User::class)->where('is_teacher','=',1);
}
public function students() {
return $this->belongsToMany(User::class)->where('is_teacher','=',0);
}
我想通过获取is_teacher列的值来检查当前登录用户是否是当前教室中的教师
目前正在这样做:
auth::user()->classrooms->find($classroom->id)->pivot->is_teacher
有更好的方法吗?如果教室不存在,我会这样做以避免问题:
$classroom = auth::user()->classrooms()->find($classroom->id);
if (! $classrooom) {
// throw/return an error accordingly
}
$isTeacher = $classrooom->pivot->is_teacher
PS:使用括号进行教室操作非常重要,否则您将返回属于用户的所有教室,并在PHP端进行过滤。目前这样做:他已经在获取数据。他想知道有没有更好的方法可以做到这一点?带括号的教室不会返回任何结果,并且会给我一个错误@LuisFernandoMontoya