首页 文章

Laravel 5.4:用户模型关系取决于角色

提问于
浏览
1

在这种情况下,我想问一下最好的策略(使用MySQL DB):

我有一个用户模型/表 . 用户可以是3种不同的类型:管理员,所有者和 Worker .

  • 所有者拥有多个地点

  • 位置有很多 Worker

  • Worker 属于一个位置

1st Option I see:

为所有者和工作人员扩展用户模型是否有意义,因为他们有共同的字段并在用户表中添加“角色”字段?

为Owner和Worker创建2个其他表是否正确?

在这种情况下,雄辩如何处理关系?

2nd option (easier but...):

管理员,所有者, Worker 是3种不同的模型/表


然后我想得到如下数据:

  • $location->owner() //为此位置获取角色为'owner'的用户

  • $location->workers() //为此位置获取角色为'workers'的用户

  • $owner->workers() //获取与所有者相关的 Worker

1 回答

  • 1

    最后,我用过:

    • 用户表

    • 角色表

    • role_user透视表

    • 位置表

    • location_user透视表

    在User模型中,一些queryScope方法按角色检索用户:

    public function scopeOwners($query) 
        {
            $query->whereHas('roles', function ($q) {
                $q->where('name','owner');
            });
        }
    

    很容易 .

相关问题