I have 3 tables
roles
id `````` |```` `` role ```````` |
1 `````` ```````` Staff
permissions
id ````````| `````````` Name ```````````` |
1 ````````````Manage All Projects
2 ```````````` Manage Clients
acces_permissions
id_permission FK | id_role FK
`````` `` 1 ```````````````````` 1
```````` 2 ```````````````````` 1
and i will have a table with
roles | permissions Name |
Staff | Manage All Projects Manage Clients |
how can o this whit this 3 Models
class roles extends Model
class permissions extends Model
class acces_permissions extends Model
correct me if im wrong, what you are trying to achieve is get all permissions using the role of a user ..
the easiest way is to use belongsToMany
eloquent relation, in your Role model add this
public function permissions()
{
return $this->belongsToMany('App\Permissions', 'access_permission_table', 'id_role', 'id_permission');
}
this way, when you call $role->permissions, you'll get all the permission for that role.
i put
public function permissions()
{
return $this->belongsToMany('permissions::class', 'access_permissions',
'id_role', 'id_permission');
}
in class roles extends Model
get
$roles=roles::all();
in controller
and
@foreach($roles as $role)
$role['permissions']
in templete
but dosent work
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)
but the join query seems right
ok i did
public function permissions()
{
return $this->belongsToMany(permissions::class, 'acces_permissions' , 'id_role',
'id_permission');
}
and now it work differently of before i dont know why
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.