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

时间:2017-04-20 08:38:07

标签: laravel eloquent laravel-eloquent

我想在这种情况下(使用MySQL DB)要求最佳策略:

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

  • 所有者拥有多个地点
  • 位置有很多工人
  • 工人属于一个位置

我看到第一个选项:

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

为所有者和工人创建2个其他表是否正确?

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

第二个选项(更简单但......):

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

然后我想获得如下数据:

  • $ location-> owner() //让用户拥有'所有者'对于这个位置
  • $ location-> workers() //让用户拥有' workers'对于这个位置
  • $ owner-> workers() //获取与所有者相关的工作人员

1 个答案:

答案 0 :(得分:1)

最后,我使用了:

  • 用户表
  • 角色表
  • role_user pivot table
  • 位置表
  • location_user pivot table

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

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

很容易。