2016-09-22 3 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

を試してみてください? –

+0

はい。 $ user_idは配列ではありません –

+0

これを行いますarray_push($ user_roles、$ id-> role); – Komal

答えて

0

をあなたは$user_rolesを持っており、 $user_idが配列プッシュで混在しています。

変更:

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

へ:array_pushため

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

最初の引数は、あなたがアイテムを押しされる配列です。 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); 
} 
} 

またはキーを必要とする場合にも、それはあなたが代わりに `` $のuser_id`の$のuser_roles`を書きたかったのだろう、この

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)); 
} 
} 
関連する問題