首页 > 解决方案 > 从 eloquent 模型的相关表中获取格式化属性

问题描述

我有 3 张桌子

 1. User table[id, name, email]
 2. user_roles[user_id, role_id]
 3. roles[ id, permission{post:{edit:true,delete:false}} ]

 user hasone user_roles

 roles belongs to user_roles

userRole.role急切地加载到用户模型中

是否可以通过在用户模型中调用一些自定义函数来获得权限。而不是user->userRole->role每次。like call like$user->permissions()将从角色表中返回 json

标签: laravellaravel-5eloquent

解决方案


您可以像这样在您的用户模型中创建一个方法-

public function permissions()
{
    return $this->userRole->role;
}

Laravel 允许你这样称呼你的关系。这里$this代表您创建此方法的用户模型。因此,在$this上调用关系将毫无问题。

然后你可以像这样用你的用户集合调用它 -

$user->permissions();

如果您想将其与登录用户一起使用,则可以这样调用它-

auth()->user()->permissions();

推荐阅读