我想从["role"=>"user_id"]
变量访问具有以下结构$space_roles
的嵌套集合属性:
Illuminate\Database\Eloquent\Collection {#3168
all: [
App\UserGroup {#3153
role: "CONTRIBUTORS",
updated_at: "2019-04-25 09:03:24",
name: "Contributeurs",
created_at: "2019-04-25 09:03:24",
slug: "contributeurs-2",
id: 765,
users: Illuminate\Database\Eloquent\Collection {#3152
all: [],
},
},
App\UserGroup {#3156
role: "AUTHORS",
updated_at: "2019-04-25 09:03:24",
name: "Auteurs",
created_at: "2019-04-25 09:03:24",
slug: "auteurs-2",
id: 1554,
users: Illuminate\Database\Eloquent\Collection {#3169
all: [
App\User {#3180
updated_at: "2019-04-25 09:01:42",
created_at: "2019-04-25 09:01:42",
last_name: "Lisangola",
company: "Kinshasa Digital",
first_name: "Christian",
slug: "christian-lisangola",
email: "christian@kinshasadigital.com",
id: 1296,
},
],
},
},
App\UserGroup {#3159
role: "ANIMATORS",
updated_at: "2019-04-25 09:03:24",
name: "Animateurs",
created_at: "2019-04-25 09:03:24",
slug: "animateurs-2",
id: 1534,
users: Illuminate\Database\Eloquent\Collection {#3171
all: [],
},
},
App\UserGroup {#3162
role: "ADMINISTRATORS",
updated_at: "2019-04-25 09:03:24",
name: "Administrateurs",
created_at: "2019-04-25 09:03:24",
slug: "administrateurs-1",
id: 1323,
users: Illuminate\Database\Eloquent\Collection {#3172
all: [
App\User {#3185
updated_at: "2019-04-25 09:03:05",
created_at: "2019-04-25 09:03:05",
last_name: "Calvin",
company: "Gravity",
first_name: "Jean",
slug: "jean-calvin",
email: "jean@gmail.com",
id: 1533,
},
],
},
},
],
}
要尝试获得我想要的东西,我通过执行pluck
使用了laravel集合方法$space_roles->pluck('users.id','role')
,它为用户的属性返回了null
。
但是我无法获得预期的结果。我尝试按照此处的说明进行操作:Accessing data from a Collection通过像这样$space_roles->pluck('users')->flatten()->pluck('id')
进行链接,它可以工作,但我只能访问users
,而不能访问role
。
我对此感到困惑。
答案 0 :(得分:3)
您可以使用map()
收集方法以所需的方式返回数据:
$space_roles = $space_roles->map(function($role, $key) {
return [$role->role => $role->users->pluck('id')->all()];
})->values()->all();
pluck()
用于从用户返回所有id
。