2014-06-05 3 views
2

키가 리턴 된 ID과 같은 배열을 생성하려고합니다. 그러나이 코드를 실행하면 타임 스탬프 만 존재하고 값이 증가합니다. $arr은 이미 배열이기 때문에 toArray()을 수행 할 방법이 없습니다. 이유는 없습니다. 이유가 없습니다.Laravel eloquent set 배열 키

$projects = Project::with(array('todos', 'contacts', 'categories'))->get(); 

    foreach ($projects as $project) { 
     $open = Todo::status($project->id, 1)->get()->count(); 
     $progress = Todo::status($project->id, 2)->get()->count(); 
     $completed = Todo::status($project->id, 3)->get()->count(); 

     $project->status = [ 
      'open' => $open, 
      'progress' => $progress, 
      'completed' => $completed 
     ]; 

     $arr[$project->id] = $project; 
     return $arr; 
    } 
+0

'foreach'는'return 문 '을 사용할 때 메서드를 중지 할 때 한 번만 실행됩니다. 문제로 돌아 가기 :'return $ arr' 대신'return $ project'를하면 어떻게됩니까? –

+0

@PatrickReck 키 [0], [1] 등이 증가하는 객체 배열을 얻습니다. – guidsen

답변

0

어쩌면 당신이 그것에게 laravel 방법을 시도해 볼 수도 있습니다 :

$projects = Project::with(array('todos', 'contacts', 'categories'))->get(); 

$projects->each(function($project){ 

     $open = Todo::status($project->id, 1)->get()->count(); 
     $progress = Todo::status($project->id, 2)->get()->count(); 
     $completed = Todo::status($project->id, 3)->get()->count(); 

     $project->status = [ 
      'open' => $open, 
      'progress' => $progress, 
      'completed' => $completed 
     ]; 

}); 

return $projects->toArray(); 

그 쿼리가 켜 집 컬렉션 개체를 반환, 당신은 스스로를 배선보다는 가능한 수집 방법을 활용할 수 있습니다. http://laravel.com/docs/eloquent#collections

+0

project-> id를 키로하는 연관 배열을 출력하는 OP의 의도를 해결하지 못했습니다. – geoidesic