我正在尝试循环并收到以下错误:
array_push()期望参数1为数组,给定对象
我的控制器:
public function ViewSponsorInfo($sponsor_id)
{
$id = $sponsor_id;
$user_id = User::where('id','=',$id)->get();
$user_roles = [];
foreach ($user_id as $id) {
array_push($user_id, $id->role);
}
}
答案 0 :(得分:0)
您的阵列推送中混有$user_roles
和$user_id
。
更改:强>
array_push($user_id, $id->role);
以强>
array_push($user_roles, $id->role);
array_push的第一个参数是您要将项目推送到的数组。您试图将user_id推送到用户对象,而不是数组,因此错误。
答案 1 :(得分:0)
由于您使用的是一个返回Illuminate\Support\Collection的Eloquent查询,您可以在不循环的情况下实现它:
$user_roles = User::where('id', '=', $id)->pluck('role');
虽然这不是问题的一部分:我想知道为什么你希望通过 id 检索用户时返回多于1条记录?为什么不
$user_roles = User::find($id)->role; // or: User::findOrFail($id)->role
代替?
答案 2 :(得分:0)
试试这个男人,
public function ViewSponsorInfo($sponsor_id)
{
$id = $sponsor_id;
$user_id = User::where('id','=',$id)->get();
$user_roles = [];
foreach ($user_id as $id) {
array_push($user_roles, $id->role);
}
}
或者如果你需要密钥也可以尝试这个
public function ViewSponsorInfo($sponsor_id)
{
$id = $sponsor_id;
$user_id = User::where('id','=',$id)->get();
$user_roles = [];
foreach ($user_id as $id) {
array_push($user_roles, array('role' => $id->role));
}
}