繁体   English   中英

Laravel has很多不返回集合

[英]Laravel hasMany not returning collection

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

模型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密钥,因此我需要表users__action_permission来保存user_id

我的问题是Laravel是否可以通过User::permissions()访问users__action_permission表,还是我需要为此建立模型?

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

在用户模型中添加

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

在动作权限模型中添加

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM