2017-04-21 94 views
0

我有4个表:laravel关系的表

用户(ID,ROLE_ID)

角色(ID)

permission_role(ROLE_ID,permission_id)

许可(ID,姓名)

用户模型

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 
use Zizaco\Entrust\Traits\EntrustUserTrait; 

class User extends Authenticatable 
{ 
    use Notifiable; 
    use EntrustUserTrait; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
    public function roles() 
{ 
    return $this->hasOne('App\Role', 'id', 'role_id'); 
} 
} 

榜样

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Zizaco\Entrust\EntrustRole; 

class Role extends EntrustRole 
{ 
    public function users() 
{ 
    return $this->belongsTo('App\User','role_id','id'); 
} 
public function permissions() 
    { 
     return $this->belongsToMany('App\Permission','permission_role'); 
    } 
} 

权限模型:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Zizaco\Entrust\EntrustPermission; 

class Permission extends EntrustPermission 
{ 
    public function roles() 
    { 
     return $this->belongsToMany('App\Role','permission_role'); 
    } 
} 

,我想在我的控制器进行测试,看是否通过用户如果条件有权限delete_article,任何帮助吗?并感谢

回答

0

在你角色模型 像这样的事情,你需要做的(多对多)

//....................... 
public function permissions() 
{ 
    return $this->belongsToMany('App\Permission','permission_role''role_id', 'permission_id'); 
} 
//...................... 

多对多关系:Link

并获取数据进入你的控制器

//.......................................... 
$user = get data with role and permission 
$roles= $user->roles; 
foreach($roles as $role){ 
    foreach($role->permissions as $permission){ 
     $permissiona_name = $permission->name; 
    } 
} 
//........................... 

用的var_dump($用户)首先检查

Many to many with pivot(见Retrieving Intermediate Table Columns部分)

return $this->belongsToMany('App\Role')->withPivot('column1', 'column2'); 

参见 “Has Many Through