Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.4:取决于角色的用户模型关系_Laravel_Eloquent_Laravel Eloquent - Fatal编程技术网

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

Laravel 5.4:取决于角色的用户模型关系,laravel,eloquent,laravel-eloquent,Laravel,Eloquent,Laravel Eloquent,我想问一下这种情况下的最佳策略(使用MySQL DB): 我有一个用户模型/表。用户可以是3种不同的类型:管理员、所有者和工作者 店主有很多地方 这个地方有很多工人 该工人属于某个位置 我看到的第一个选项: 所有者和工作者扩展用户模型是否有意义,因为他们有公共字段,并在用户表中添加“角色”字段 为所有者和工作者创建另外两个表是否正确 在这种情况下,口才如何处理人际关系 第二个选项(更简单,但…): 管理员、所有者和工作人员是3种不同的模型/表 然后我想得到如下数据: $location-

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

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

  • 店主有很多地方
  • 这个地方有很多工人
  • 该工人属于某个位置
我看到的第一个选项:

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

为所有者和工作者创建另外两个表是否正确

在这种情况下,口才如何处理人际关系

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

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


然后我想得到如下数据:

  • $location->owner()//获取此位置具有“owner”角色的用户
  • $location->workers()//获取此位置具有“workers”角色的用户
  • $owner->workers()//获取与所有者相关的worker
最后,我使用了:

  • 用户表
  • 角色表
  • 角色\用户透视表
  • 位置表
  • 用户数据透视表的位置
在用户模型中,按角色检索用户的一些queryScope方法:

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

很简单。

我想说的是,保留单用户表,并将角色作为归属关系的中间表,这样在将来,如果用户可以有多个角色,它将被处理。您可以在用户模型上定义location和worker-belongsTo关系,这本身没有问题,如果该关系没有其他角色的数据,它将返回null。谢谢,但是接下来如何设置模型:$location->workers()或$owner->workers()?