Php Laravel雄辩的模型很多都能通过他们的角色获得所有用户
亲爱的人们 最近,我开始更多地使用Laravel模型和雄辩的关系,而不是编写原始查询 现在我面临一个问题: 我在用户模型中获得了关系: 另一个关系是榜样: 我能够检索所有用户,并使用controller中的代码对其进行回显:Php Laravel雄辩的模型很多都能通过他们的角色获得所有用户,php,oop,laravel-5,eloquent,many-to-many,Php,Oop,Laravel 5,Eloquent,Many To Many,亲爱的人们 最近,我开始更多地使用Laravel模型和雄辩的关系,而不是编写原始查询 现在我面临一个问题: 我在用户模型中获得了关系: 另一个关系是榜样: 我能够检索所有用户,并使用controller中的代码对其进行回显: $users = User::with('roles')->get(); foreach ($users as $user) { echo $user."<br>"; } {id:18,姓名:Ajx6bK,姓氏:AwkMTWzgIB,用户名:vt_252
$users = User::with('roles')->get();
foreach ($users as $user) {
echo $user."<br>";
}
{id:18,姓名:Ajx6bK,姓氏:AwkMTWzgIB,用户名:vt_2528,创建地址:2017-01-12,更新地址:null,角色:[{role_id:3,role_name:Reporter,role_description:能够在系统中管理报告,透视:{Users_id:18,roles_role_id:3}}]
{id:19,姓名:NJYMCU,姓氏:ZGzjvpDAiP,用户名:vt_6443,创建地址:2017-01-12,更新地址:null,角色:[{role_id:1,role_name:Admin,role_description:在系统中拥有大部分用户权限,包括用户管理,pivot:{users_id:19,roles_role_id:1}]
{id:20,名称:hVUrMG,姓氏:fc72G7Ksw2,用户名:vt_6610,创建地址:2017-01-12,更新地址:null,角色:[{role_id:2,role_name:Data entry,role_description:能够管理系统中的记录,透视:{Users_id:20,roles_role_id:2}}]
问题:
我无法访问表角色的任何字段变量$用户->角色->角色名称或角色描述。$user->roles是一个角色数组,因此您应该相应地访问它们:
foreach ($user->roles as $role) {
echo $role->role_name;
}
角色是对象数组,您需要循环它
foreach($user->roles as $role){
echo $role->role_name."<br/>";
}
还要了解如何设置和获取属性值:您正在对集合执行echo,以便它将其转换为JSON。 但如果您将集合转换为数组,并使用任何转储方法dd或dump,您将看到现在很容易通过该数组循环访问角色 $users = User::with('roles')->get(); dd($users->toArray()); 要访问角色名称和描述,您可以为数组中的每个循环加倍,如下所示
$users = User::with('roles')->get();
foreach ($users->toArray() as $key => $value) {
foreach ($value['roles'] as $innerkey => $innervalue) {
echo $innervalue['role_id'];//for role id
echo $innervalue['role_name'];//for role name
echo $innervalue['role_description'];//for role description
}
}
exit;
这段代码给了我错误:$users=User::with'roles'->get;foreach$users->role as$role{echo$role->role_name;}HomeController.php第38行中的ErrorException:未定义的属性:illumb\Database\elokent\Collection::$roleDrops现在:未定义的属性:illumb\Database\eloken\Collection::$roles只需对您拥有的新代码提出疑问。。肯定有什么不对劲 $users = User::with('roles')->get(); dd($users->toArray());
array:4 [▼
0 => array:8 [▶]
1 => array:8 [▶]
2 => array:8 [▶]
3 => array:8 [▼
"id" => 4
"username" => "testcase1"
"email" => "test1@test.com"
"firstname" => "Test"
"lastname" => "One"
"created_at" => "2018-04-04 05:17:13"
"updated_at" => "2018-04-04 05:17:13"
"roles" => array:1 [▼
0 => array:5 [▼
"id" => 4
"name" => "user"
"created_at" => "2018-04-04 05:17:13"
"updated_at" => "2018-04-04 05:17:13"
"pivot" => array:2 [▼
"user_id" => 4
"role_id" => 4
]
]
]
]
]
$users = User::with('roles')->get();
foreach ($users->toArray() as $key => $value) {
foreach ($value['roles'] as $innerkey => $innervalue) {
echo $innervalue['role_id'];//for role id
echo $innervalue['role_name'];//for role name
echo $innervalue['role_description'];//for role description
}
}
exit;