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

先说一下要求:
在一家企业里面有这样的一个关系,一个人可能在多个部门担任不同的职位,建立模型关联。已知用户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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
role_user
    department_user_id - integer
    role_id - integer

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

role_user
    role_id - integer
    user_id - integer

如何找自己的职位

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

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

role_user
    role_id - integer
    user_id - integer

如何找自己的职位

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

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

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
4年前 评论
MarcoG (楼主) 4年前
chuoke (作者) 4年前
MarcoG (楼主) 4年前

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