简体   繁体   中英

Laravel 3 table Eloquent: relation

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM