Php Laravel 3表雄辩:关系

Php Laravel 3表雄辩:关系,php,laravel,orm,eloquent,relation,Php,Laravel,Orm,Eloquent,Relation,我有三张桌子 角色 id``````角色`| 1名工作人员 权限 id````````````Name``````````| 1“管理所有项目” 2“管理客户机” 访问权限 id_权限FK | id_角色FK ````````1`````````````````1 ````````2````````````````1 我要一张桌子 角色|权限名称| 员工|管理所有项目管理客户| 这3款车型怎么能做到这一点 class roles extends Model class permissions e

我有三张桌子

角色

id``````角色`|

1名工作人员

权限

id````````````Name``````````|

1“管理所有项目”

2“管理客户机”

访问权限

id_权限FK | id_角色FK
````````1`````````````````1

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

我要一张桌子

角色|权限名称|

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

这3款车型怎么能做到这一点

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

如果我错了,请纠正我,您试图实现的是使用用户角色获取所有权限

最简单的方法是使用
belongtomany
雄辩的关系,在你的角色模型中添加这一点

public function permissions()
{
    return $this->belongsToMany('App\Permissions', 'access_permission_table', 'id_role', 'id_permission');
}
这样,当您调用$role->permissions时,您将获得该角色的所有权限。

public function permissions()
{
    return $this->belongsToMany('permissions::class', 'access_permissions', 
    'id_role', 'id_permission');
}
类内角色扩展模型

得到

内部控制器

@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)
但是join查询似乎是正确的

好的

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

现在它的工作方式与以前不同了,我不知道为什么请更具体地回答你的问题。你想实现什么?这个问题是关于laravel 3还是关于laravel和3个表的?关于laravel 5.6i将使用用户角色获得所有权限是的,我将使用用户角色获得所有权限
public function permissions()
{
 return $this->belongsToMany(permissions::class, 'acces_permissions' , 'id_role', 
 'id_permission');
}