首页 > 解决方案 > 定义关系后,此集合实例上不存在属性 [roles]

问题描述

我正在尝试加载属于权限的所有角色。$permissions = \App\Permission::with('roles')->get();

当我尝试并return $permissions->roles;收到此错误时,即使我已经设置了适当的关系:

此集合中不存在属性 [角色]

权限模型关系

public function roles()
{
    return $this->belongsToMany(Role::class);
}

当我简单地return $permissions;得到适当的输出时:

[  
   {  
      "id":1,
      "name":"edit_post",
      "label":"Edit Posts",
      "created_at":null,
      "updated_at":null,
      "roles":[  
         {  
            "id":1,
            "name":"admin",
            "label":"Admin",
            "created_at":null,
            "updated_at":null,
            "pivot":{  
               "permission_id":1,
               "role_id":1
            }
         }
      ]
   },
   {  
      "id":2,
      "name":"delete_post",
      "label":"Delete Posts",
      "created_at":null,
      "updated_at":null,
      "roles":[  
         {  
            "id":1,
            "name":"admin",
            "label":" Admin",
            "created_at":null,
            "updated_at":null,
            "pivot":{  
               "permission_id":2,
               "role_id":1
            }
         }
      ]
   }
]

我不确定这里有什么问题。

标签: laravelcollectionseloquent

解决方案


您需要遍历权限角色。

foreach ($permissions as $permission) {
    return $permission->roles;
}

推荐阅读