用户、部门、职位这三个按照多对多如何建立模型关联,并查找用户在某个部门里的职位?

先说一下要求:
在一家企业里面有这样的一个关系,一个人可能在多个部门担任不同的职位,建立模型关联。已知用户User跟部门Department是多对多的关系,用户User和职位Role也是多对多的关系。

users
    id - integer
    name - string
departments
    id - integer
    name - string
roles
    id - integer
    name - string

我自己的设想是建立这样的关联:

department_user
    id - integer
    department_id - integer
    user_id - integer

role_user
    department_user_id - integer
    role_id - integer

我遇到的问题是,这样关联时候如何通过多对多关联找到自己的职位呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案
role_user
    department_user_id - integer
    role_id - integer

这里应该改成如下,因为 role_user 表示的是角色和用户之间的多对多关系。

role_user
    role_id - integer
    user_id - integer

如何找自己的职位

$user->roles;
5年前 评论
MarcoG (楼主) 5年前
ㅤㅤ (作者) 5年前
MarcoG (楼主) 5年前
讨论数量: 2
role_user
    department_user_id - integer
    role_id - integer

这里应该改成如下,因为 role_user 表示的是角色和用户之间的多对多关系。

role_user
    role_id - integer
    user_id - integer

如何找自己的职位

$user->roles;
5年前 评论
MarcoG (楼主) 5年前
ㅤㅤ (作者) 5年前
MarcoG (楼主) 5年前

根据你的描述,我的理解是,角色是归属在部门下的,那么只需:

users: id, name
departments: id, name
roles: id, name, department_id
user_role: user_id, role_id

如果要查看他的部门信息:

$user->role->department

当然还可以在 user_role 加上 role 对应的 department_id,这样可以方便绕过 role 直接获取到 department

// user_role: role_id, user_id, department_id
$user->department
5年前 评论
MarcoG (楼主) 5年前
chuoke (作者) 5年前
MarcoG (楼主) 5年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!