2017-03-19 15 views
1

テーブル配列$ users(ID、名前、電子メール、パスワード、アバター、created_at、updated_at、roles)があります。配列からすべての値を取得

私は、だから私は下の配列のキー'roles'に匿名関数で何かを書いたUser::latest()->get();

から、この値の配列を代入したいと思います:

$data = User::latest()->get(); 
    $i = 0; 
    foreach($data as $user){ 
     $users[$i] = [ 
      'id' => $user->id, 
      'name' => $user->name, 
      'email' => $user->email, 
      'password' => $user->password, 
      'avatar' => 'default.png', 
      'roles' => function(){ 
       foreach($user->roles as $role){ 
        return $role->name; 
       } 
      }, 
      'created_at' => $user->created_at, 
      'updated_at' => $user->updated_at 
      ]; 
     $i++; 
    } 

しかし、それは動作しません。

私はこのように試してみました:

$data = User::latest()->get(); 
    $i = 0; 
    foreach($data as $user){ 
     foreach($user->roles as $role){ 
      $users[$i] = [ 
       'id' => $user->id, 
       'name' => $user->name, 
       'email' => $user->email, 
       'password' => $user->password, 
       'avatar' => 'default.png', 
       'roles' => $role->name, 
       'created_at' => $user->created_at, 
       'updated_at' => $user->updated_at 
      ]; 
     } 
     $i++; 
    } 

しかし、変数の役割」で、すべての、唯一の最後の役割をしませ得ます。

だから誰も変数にこれらの値を割り当てる方法を知っています。

答えて

0

使用array_map

 'roles' => array_map(function($role){ 
         return $role->name; 
        }, $user->roles), 
0

代わり$user->roles()->pluck('name');を試してみてください。 pluckメソッドは、対応するユーザーのすべてのロール名のリストを提供し、あなたのケースのどのマップ関数よりも「よりクリーンで読みやすく」なります。

0

foreachループで空の配列および他の配列を作成し、続く

$userArr = []; 
if ($data) { 
foreach ($data as $dataobj) { 
$usersArray= [ 
      "id" => $dataobj->id, 
      "name" => $dataobj-name, 
      "email" => $dataobj-email, 
      "password" => $dataobj-password, 
      "avatar" => "default.png", 
      "roles" => $role->name, 
      "created_at" => $dataobj-created_at, 
      "updated_at" => $dataobj-updated_at 
     ]; 
array_push($userArr, $usersArray); 
} 
として空の配列にそれをプッシュするこの方法を試してみてください
関連する問題