[英]Laravel 3 table Eloquent: relation
我有3張桌子
角色
id````| |``````角色``````|
1``````````職員
權限
id``````|| ``````````名稱````````````|
1``管理所有項目
2``````````管理客戶
acces_permissions
id_permission FK | id_role FK
````````1````````````````````1
````````2``````````````````1
我將有一張桌子
角色| 權限名稱|
員工| 管理所有項目管理客戶|
這三個模型怎么能這樣
class roles extends Model
class permissions extends Model
class acces_permissions extends Model
如果我錯了,請糾正我,您要實現的目標是使用用戶角色獲取所有權限。
最簡單的方法是使用belongsToMany
雄辯的關系,在您的角色模型中添加此
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');
}
班級角色擴展模型
得到
$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)
但是聯接查詢似乎正確
好吧,我做到了
public function permissions()
{
return $this->belongsToMany(permissions::class, 'acces_permissions' , 'id_role',
'id_permission');
}
現在它的工作方式與我不知道為什么之前不同
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.