无法返回简单的多对多关系值

时间:2014-07-30 15:17:34

标签: php laravel many-to-many eloquent relationship

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

我在Laravel中创建了多对多关系。我的'用户'表代表可以在我的系统中登录的用户我的'模块'表表示用户登录的模块可以访问。所以,我想验证当前登录用户是否可以访问所请求的模块

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

我的表:'用户','模块'和'用户_模块'

我在'模块'模型上尝试了类似的功能,但没有成功。 $ 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');
}

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

2 个答案:

答案 0 :(得分:0)

执行此操作的方法是在app/filters.php中创建自定义路由过滤器,以检查用户是否是相关模块的成员。

查看文档here,特别是有关指定过滤器参数的部分,这应该会让您朝着正确的方向前进。

答案 1 :(得分:0)

使用Entrust for Laravel解决了这个问题。谢谢所有帮助过我的人!

Entrust的链接:

https://github.com/Zizaco/entrust