2017-11-16 1 views
0
public function showJobCategoryContent($id){ 

    $jobsInfoById = DB::table('jobs')->where('category_id', '=', $id)->where('published', '=', 1)->paginate(3); 

    // Imagine here i got 5 data 

    foreach ($jobsInfoById as $jobInfoById) { 
      return $current=$jobInfoById->created_at; 
     //$trialExpires []= $current->addDays(30); 
    } 
} 

루프를 사용하면 1 데이터 만 표시됩니다. 어떻게 가능합니까 array 부호를 사용하면 1 데이터가 표시됩니다.Loop over Laravel Collection

+1

'return '이 무엇을 기대합니까? – Luke

+0

왜냐하면'return $ current = $ jobInfoById-> created_at; '이기 때문입니다. 첫 번째 반복 후에 루프를 벗어납니다. –

+0

'return'이'function'을 떠납니다. 나는. 한 번만 반복됩니다. – Luke

답변

1

모든 created_at 배열을 가져 오려면 루프가 필요하지 않습니다.

public function showJobCategoryContent($id) 
{ 

    $jobsInfoById = DB::table('jobs')->where('category_id', '=', $id)->where('published', '=', 1)->paginate(3); 

    $jobsInfoById = $jobsInfoById->map(function ($job) { 
     return $job->created_at->addDays(30); 
    }); 

    return $jobsInfoById->pluck('created_at'); 
} 

는 Laravel 컬렉션에서 살펴보고 그들이 도움이 될 수있는 방법 : 각 날짜에 30 일 추가하려면

public function showJobCategoryContent($id) 
{ 

    $jobsInfoById = DB::table('jobs')->where('category_id', '=', $id)->where('published', '=', 1)->paginate(3); 

    $dates = []; 
    foreach ($jobsInfoById as $jobInfoById) { 
     $dates[] = $current = $jobInfoById->created_at; 
    } 

    return $dates; 
} 

:

public function showJobCategoryContent($id) 
{ 

    $jobsInfoById = DB::table('jobs')->where('category_id', '=', $id)->where('published', '=', 1)->paginate(3); 

    return $jobsInfoById->pluck('created_at'); 
} 

루프를 사용 link

+0

명확히하기 위해,'pluck'은 내부적으로 컬렉션을 반복하는 루프를 사용합니다. 그래서 루프가 여전히 사용되고 있습니다. – fubar

+0

@fubar 예, 그렇습니다.하지만 당신이보고 이해하는 것이 훨씬 쉽습니다. – Hamoud

+0

그리고'map'은 새로운'Collection'을 반환합니다. 따라서 반환 값을'$ jobsInfoById'에 다시 할당해야합니다. – fubar