【发布时间】:2014-09-22 07:37:27
【问题描述】:
首先感谢您对我的主题感兴趣。我觉得这个问题很简单。
我在 Laravel 中创建了一个多对多关系。我的'users' 表代表可以登录我的系统的用户。 我的“模块”表表示用户登录后可以访问的模块。所以,我想验证当前登录的用户是否有权访问请求的模块。
例如,用户尝试访问 URL:laravel.com/blog/insert 但是用户没有这个模块的权限,所以系统验证关系并返回用户是否可以继续在这个页面。我认为这个验证可以在控制器的 __construct 方法中完成。
我的表:“users”、“modules”和“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');
}
我该怎么做?感谢所有帮助我的人! :)
【问题讨论】:
-
你不需要那个静态方法。无论如何,它看起来没问题,那么问题是什么?具体一点,
no success什么也没说。 -
好的,当我在 index.blade.php 文件中调用静态方法时,会发生以下错误:未定义属性:Illuminate\Database\Eloquent\Collection::$firstname(查看: /home/pedroroccon/app/views/admin/dashboard/index.blade.php)。我这样称呼我的代码:
Modules::getUser(1)->firstname。名字是我的“用户”表中的一个字段。 -
这是因为您返回了模型集合(因为它有许多相关模型),并且您正在尝试获取模型的属性。
标签: php laravel many-to-many eloquent relationship