2017-03-19 2 views
1

테이블 배열 $ 사용자 (ID, 이름, 전자 메일, 암호, 아바타, created_at, updated_at, 역할);배열에서 모든 값 가져 오기

$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++; 
    } 

는하지만이 작동하지 않습니다 내가 User::latest()->get();

에서 값의 배열을 지정하려는

그래서 나는 키 'roles' 아래 배열에 익명 함수로 뭔가를 썼다.

나는 다음과 같은 시도 :
$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); 
} 
를 따를 때 빈 배열이 밀어