2016-09-22 87 views
0

我试图循环,并得到了以下错误:我试着去循环使用的foreach和使用方法array_push()

array_push() expects parameter 1 to be array, object given

我的控制器:

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); 
    } 
} 
+2

它可能是你想写'$ user_roles',而不是'$ user_id'? –

+0

是的。 $ user_id不是数组 –

+0

做这个array_push($ user_roles,$ id->角色); – Komal

回答

0

你有$user_roles$user_id在您的数组推送中混淆。

变化:

array_push($user_id, $id->role); 

到:

array_push($user_roles, $id->role); 

为array_push第一个参数是要在其中推动的项目阵列。您试图将user_id推入用户对象,该用户对象不是数组,因此是错误。

0

由于您使用的是返回Illuminate\Support\Collection雄辩的查询,你还可实现它不用循环:

$user_roles = User::where('id', '=', $id)->pluck('role'); 

虽然这不是问题的一部分:我不知道你为什么希望超过1项纪录当通过找回用户时返回id?为什么不做

$user_roles = User::find($id)->role; // or: User::findOrFail($id)->role 

取而代之?

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)); 
} 
}