【问题标题】:laravel relationship's tableslaravel 关系表
【发布时间】:2017-04-21 23:25:04
【问题描述】:

我有 4 张桌子:

用户(id,role_id)

角色(id)

permission_role(role_id,permission_id)

权限(id, name)

用户模型

 <?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');
    }
}

我想在我的控制器中进行测试,看看用户是否通过 if 条件拥有 delete_article 权限,有什么帮助吗?并感谢

【问题讨论】:

    标签: php laravel


    【解决方案1】:

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

    //.......................
    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($user)

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

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

    另见“Has Many Through

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 2015-02-22
      • 2014-05-08
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 2015-01-01
      相关资源
      最近更新 更多