我在用户模型和教室模型之间有很多关系
这是结构:
- 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端进行过滤。