簡體   English   中英

Laravel 3表雄辯:關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM