不能返回简单的多对多关系值


Can't return a simple many-to-many relationship value

首先感谢大家对我的话题感兴趣。我认为这个问题很容易。

我有一个多对多关系在Laravel创建。我的'users'表表示可以登录我的系统的用户。我的'modules'表表示用户登录的模块可以访问。因此,我想验证当前登录的用户是否有权访问所请求的模块

例如,用户试图访问URL: laravel.com/blog/insert但是用户没有这个模块的权限,所以系统会验证关系并返回用户是否可以继续进入这个页面。我认为这个验证可以在控制器的__construct方法中完成。

我的表:"用户的"模块"answers"users_modules"

我在我的'模块'模型上尝试过这样的东西,但没有成功。$id表示模块id:

public static function getUser($id)
{
    $module = Modules::where('id', '=', $id)->first();
    return $module->users;
}

我的用户模型关系:

public function modules()
{
    return $this->belongsToMany('Modules', 'users_modules', 'user_id', 'module_id');
}

和我的模块关系:

public function users()
{
    return $this->belongsToMany('User', 'users_modules', 'module_id', 'user_id');
}

我该怎么做呢?谢谢所有帮助我的人!:)

要做到这一点,方法是在app/filters.php中创建一个自定义路由过滤器,检查用户是否为正在讨论的模块的成员。

看一下这里的文档,特别是关于指定过滤器参数的部分,它应该会让你朝着正确的方向前进。

解决了在Laravel中使用委托的问题。感谢所有帮助过我的人!

委托链接:

https://github.com/Zizaco/entrust