繁体   English   中英

laravel 多对多关系从数据透视表中获取数据

[英]laravel many to many relationship get data from pivot table

我在用户和课堂模型之间存在多对多关系

这是结构:

- 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端做过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM