2016-09-22 89 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)); 
} 
}