首页 > 解决方案 > 我应该如何模拟这种关系?

问题描述

我对 PHP 比较陌生,刚开始学习 Laravel。我留下了一些关于我正在从事的个人学习项目的问题。提前感谢您的任何反馈!

语境:

我的项目使用默认的 laravel 7.x UI 和 auth 脚手架。我已经使用角色表和角色用户表实现了用户角色。这按预期工作(例如,我可以对用户及其角色执行 CRUD)

Many users can have many roles.

ROLES:
Customer
Agent
Admin

我在尝试实现用户Statuses时遇到了麻烦。像这样:

具有代理角色用户在任何给定时间只能拥有一个状态;“可用”或“忙”。

问题:

#1。我应该如何定义代理用户/状态关系?最初我做了多对多。我创建了一个 statuses 表和 status_user 表。后来我得出结论,这是不正确的,并将关系更改为多对一,如下所示。(我没有改变我的任何表)

用户模型中:

    public function statuses(){

        return $this->belongsTo('App\Status');

    }

状态模型中:

    public function users(){

        return $this->belongsToMany('App\User');

    }

一些想法:

在遇到一些查询问题后,考虑到我在上面对它们进行建模的方式,我开始认为使用这两个表(statuses 和 status_user)是不正确的。

我应该回滚并在用户表中添加一个“status_id”列,同时保持表原样吗?我开始认为我把整个关系搞错了。

也许我不应该将状态与用户表相关联;而不是一个单独的“代理”表?

标签: phplaravelrelationship

解决方案


推荐阅读