【问题标题】:laravel many to many relationship get data from pivot tablelaravel 多对多关系从数据透视表中获取数据
【发布时间】:2020-07-03 03:13:19
【问题描述】:

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

这是结构:

- 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

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    如果教室不存在,我会这样做以避免出现问题:

    $classroom = auth::user()->classrooms()->find($classroom->id);
    if (! $classrooom) {
       // throw/return an error accordingly
    } 
    $isTeacher = $classrooom->pivot->is_teacher
    

    PS:做带括号的教室非常重要,否则你就是返回所有属于用户的教室,在PHP端做过滤。

    【讨论】:

    • 目前正在这样做:他已经在获取数据了。他想知道有没有更好的方法来做到这一点?
    • 带括号的课堂没有任何回报,并给我一个错误@LuisFernandoMontoya
    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2015-02-10
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多