【问题标题】:Return multiple relationships with Laravel Eloquent使用 Laravel Eloquent 返回多个关系
【发布时间】:2019-11-07 10:37:10
【问题描述】:

我有一个名为 users 的表,用户在表中的关系具有不同的角色

  • role_users (id,user_id,role_id)

现在一个角色对不同的资源拥有不同的权限

  • permissions(id,name) (permissions: edit,create)
  • resources(id,name) (resources: post,comment,user)

角色与权限的关系

  • role_resource_permissions (id,role_id,permission_id,resource_id)

我想要的是做一个雄辩的查询来搜索用户资源的可用权限。

我将如何为此定义模型中的关系。

任何帮助将不胜感激

【问题讨论】:

  • 我发现四个模型之间的关系有点混乱,你能做一个图表或者更直观的东西吗?
  • @Periplo,正如你所说,我添加了一张图表,请检查

标签: php eloquent laravel-6 eloquent-relationship


【解决方案1】:

假设您的关系是正确创建的,我认为这应该有效。试试看,告诉我结果如何:

$user_id = 1;
$user_data = Roles::whereHas('users', function (Builder $query) use ($user_id) {
        $query->where('id', $user_id);
    })->with(['permissions', 'resources'])->get();

它应该返回一个与特定用户相关的角色集合,其中包含权限资源。当然,要使此功能起作用,角色必须有许多用户

这里记录了这种技术:https://laravel.com/docs/5.8/eloquent-relationships#querying-relationship-existence

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2019-06-22
    • 2021-11-06
    • 2014-10-31
    相关资源
    最近更新 更多