Php Laravel雄辩的模型很多都能通过他们的角色获得所有用户

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

亲爱的人们

最近,我开始更多地使用Laravel模型和雄辩的关系,而不是编写原始查询

现在我面临一个问题:

我在用户模型中获得了关系:

另一个关系是榜样:

我能够检索所有用户,并使用controller中的代码对其进行回显:

$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;