【问题标题】:Laravel hasMany not returning collectionLaravel hasMany 不返回集合
【发布时间】:2018-05-17 07:54:47
【问题描述】:

我正在为权限构建中间件。 权限基于用户操作类型和/或模块/元素类型(即删除按钮)。

模型ActionPermission(表action_permission)具有所有权限类型,而表users__action_permissionUserActionPermission 的轴心,具有所有用户及其权限ID。

User

有一个permissions() 方法可以获取用户的所有权限

public function permissions()
{
    return $this->hasMany('App\ActionPermission');
}

checkUserPermissions(中间件)

public function handle($request, Closure $next)
{
        $response = $next($request);
        $userId = Auth::id();
        $userPermissions = User::findOrFail($userId)->permissions()->get();
        dd($userPermissions);
}

由于permissions() 正在寻找user_id 密钥,而ActionPermission 模型(表action_permission)没有相关的user_id 密钥,我需要拥有user_id 的表users__action_permission

我的问题是 Laravel 是否有办法让 User::permissions() 访问 users__action_permission 表,还是我需要为此建立一个模型?

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    您不需要数据透视表的模型。

    在用户模型中 添加

    public function ActionPermissions() {
        return $this->belongsToMany('App\User', 'users_action_permission');
    }
    

    在操作权限模型中 添加

    public function Users() {
        return $this->belongsToMany('App\ActionPermission', 'users_action_permission');
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 2021-10-25
      • 1970-01-01
      • 2019-04-03
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      相关资源
      最近更新 更多