如何在Laravel中设置具有不同角色的用户的关系

lnlaulya  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(109)

例如,我正在制作一个应用程序,使教师能够管理科目(添加,删除等),而用户不会做同样的事情,他/她只会参加教师的考试。
我的问题是,既然老师和学生都使用相同的模型(用户)和表,我如何设置他们的关系?
由于教师必须控制科目,在用户模型中,我将执行以下操作:

public function subjects() { return $this->hasMany(Subject::class); }

在Subject模型中:

public function user() { return $this->belongsTo(User::class); }

但那个学生呢
既然使用者对主体没有控制权,那么他一定没有这种关系,对吗?当我执行User::subjects()时,无论用户的角色是什么,User模型中的subjects()函数都会被正确调用,所以我怎么能只将角色分配给教师而不是学生呢?
我应该做:

public function subjects() { 
    // for student 
    if($this->role == 'student') { 
        return 'You do not own the subjects' 
    }

    // for teacher
    return $this->hasMany(Subject::class);
}

我将感激任何帮助。谢谢!

ikfrs5lh

ikfrs5lh1#

public function subjects() {
    return $this->hasMany(Subject::class)->whereHas('user', function ($q) {
        $q->whereHas('roles', function ($q) {
            $q->where('name', 'teacher');
        });
    });
}

相关问题