当前位置: 首页 > 知识库问答 >
问题:

多对多对一的关系

江子石
2023-03-14
// User.php ...
class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany('Role');
    }
}

// Roles.php
class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany('App\User');
    }

    public function permissions()
    {
        return $this->hasMany('Permission');
    }

}

// Permission.php

class Permission extends Model
{
    public function role()
    {
        return $this->belongsTo('Role');
    }
}

共有1个答案

胡弘毅
2023-03-14

<罢工> 我没有测试过它,但我认为这将工作或工作与非常小的twick。在您的用户模型中添加此功能。

public function getPermission($id){

        $roles = Roles::where('user_id','=', id)->get();

        $permissions = array();

        foreach($roles as $role){

            array_push($permissions, $role->permissions);

        }

        return $permissions;

    }

<罢工> 并访问为 $User->GetPermission($User->ID);。这可能不是最好的解决办法,但应该可以解决问题。

更新的代码
您可以使用访问器,如下面的示例,这将返回一个权限集合。在用户模型中使用此函数

public function getPermissions($value){

        $role_ids = Roles::where('user_id','=', $value)
            ->select(array('permission_id'))
            ->toArray();

        return Permission::find($role_ids);

    }
 类似资料:
  • 这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统

  • 我正在努力理解如何处理与JOOQ的一对多和多对多关系的Pojo。 我存储玩家创建的位置(一对多关系)。一个位置可以容纳多个可能访问它的其他玩家(多对多)。数据库布局可归结为以下内容: 在我的java应用程序中,所有这些信息都存储在一个pojo中。请注意,玩家和受邀玩家列表可以从应用程序中更新,也需要在数据库中更新: 我可以使用JOOQ的pojo映射将这三个记录映射到单个pojo吗?我可以使用这个p

  • 我还想知道如何定义每个模型上的关系--你是否需要或者是否可以只在用户上定义关系?

  • 我正在学习冬眠,只是有点困惑。

  • 问题内容: 一对多和多对一关系的真正区别是什么?它只是颠倒的,是什么样的? 除了本主题之外,我找不到关于此主题的任何“易懂”教程:初学者使用的SQL:第3部分- 数据库关系 问题答案: 是的,反之亦然。它取决于实体存在于关系的哪一侧。 例如,如果一个部门可以雇用多名员工,则部门与员工之间是一对多的关系(1个部门雇用许多员工),而员工与部门之间的关系则是多对一的关系(许多员工在一个部门中工作)。 有

  • 问题内容: 假设我有一个具有两个不同的一对多关系的对象。很像: 和 假设我的对象有两个与这两个对象相关的列表。 我已经阅读了以下示例:http : //forum.springsource.org/showthread.php?50617-rowmapper -with-one-to-many- query,其中说明了如何使用单个一对多关系来执行此操作。为了您的方便,这里是替代: 我认为这并不涉及