【问题标题】:Laravel 3 table Eloquent: relationLaravel 3 表雄辩:关系
【发布时间】:2018-07-26 04:17:14
【问题描述】:

我有 3 张桌子

角色

id `````` |```` `` 角色```````` |

1 `````` ```````` 工作人员

权限

id ````````| ``````````名称```````````` |

1 ````````````管理所有项目

2 ```````````` 管理客户端

acces_permissions

id_permission FK | id_role FK
```````` 1 ```````````````````` 1

```````` 2 ```````````````````` 1

我会有一张桌子和

角色 |权限名称 |

员工 |管理所有项目管理客户|

这 3 个模型怎么能做到这一点

class roles extends Model
class permissions extends Model
class acces_permissions extends Model

【问题讨论】:

  • 请详细说明您的问题。你想达到什么目的?
  • 这个问题是关于 laravel 3 还是关于 laravel 和 3 个表?
  • 关于 laravel 5.6 的问题
  • 我将使用用户角色获得所有权限

标签: php laravel orm eloquent relation


【解决方案1】:

如果我错了,请纠正我,您想要实现的是使用用户角色获得所有权限..

最简单的方法是使用belongsToMany eloquent 关系,在你的角色模型中添加这个

public function permissions()
{
    return $this->belongsToMany('App\Permissions', 'access_permission_table', 'id_role', 'id_permission');
}

这样,当您调用 $role->permissions 时,您将获得该角色的所有权限。

【讨论】:

  • 是的,我将使用用户角色获得所有权限
【解决方案2】:

好的,我做到了

public function permissions()
{
 return $this->belongsToMany(permissions::class, 'acces_permissions' , 'id_role', 
 'id_permission');
}

现在它的工作方式与我不知道为什么之前不同

【讨论】:

    【解决方案3】:

    我放了

    public function permissions()
    {
        return $this->belongsToMany('permissions::class', 'access_permissions', 
        'id_role', 'id_permission');
    }
    

    在类角色中扩展模型

    得到

    $roles=roles::all();
    

    在控制器中

    @foreach($roles as $role)
    $role['permissions']
    

    在模板中

    但是没用

    SQLSTATE[42S02]: Base table or view not found: 1146 Table 
    'mycrm.access_permissions' doesn't exist (SQL: select `permissions`.*, 
    `access_permissions`.`id_role` as `pivot_id_role`, 
    `access_permissions`.`id_permission` as `pivot_id_permission` from 
    `permissions` inner join `access_permissions` on `permissions`.`id` = 
    `access_permissions`.`id_permission` where `access_permissions`.`id_role` = 
    1) (View: 
    F:\MYCRM\mycrm\packages\tc\calculator\src\views\permission_pack.blade.php)
    

    但连接查询似乎正确

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 2017-03-22
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 2018-06-02
      • 2013-01-22
      • 2016-09-06
      相关资源
      最近更新 更多