Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel多对多关系从数据透视表获取数据_Php_Laravel_Eloquent - Fatal编程技术网

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