2017-02-17 4 views
0

"event_date"라는 열이있는 데이터베이스에서이 컬렉션을 가져 왔습니다.laravel 탄소 컬렉션의 날짜 열에서 날짜 이름을 가져옵니다

내가 원했던 것은 컬렉션에있는 해당 열의 요일 이름 만 얻는 것입니다.

Carbon을 사용하여 예를 들어 ->format()이라는 메서드를 통해 이름 일을 가져올 수 있다는 것을 알고 있지만이 메서드가 존재하지 않는다는 오류가 발생합니다.

다음과 같이 내 코드는 지금까지 있습니다 :

$collection = MyModel::all(); 

이 안쪽 "EVENT_DATE"속성 또는 열이 있습니다. 그로부터, 배열이나 콜렉션에 넣을 요일의 이름을 얻고 그 날의 빈도를 세고 싶습니다.

$filtered = collect([ 
      'myDates'=>$collection->pluck('event_date'), 
     ]); 

을 다음과 같이 같은 dd($filtered) 보이는 :

Collection {#209 ▼ 
    #items: array:1 [▼ 
    "myDates" => Collection {#243 ▼ 
     #items: array:30 [▼ 
     0 => Carbon {#244 ▼ 
      +"date": "2017-02-05 00:00:00.000000" 
      +"timezone_type": 3 
      +"timezone": "America/Mexico_City" 
     } 
     1 => Carbon {#218 ▼ 
      +"date": "2017-01-15 00:00:00.000000" 
      +"timezone_type": 3 
      +"timezone": "America/Mexico_City" 
     } 
     2 => Carbon {#250 ▼ 
      +"date": "2016-09-25 00:00:00.000000" 
      +"timezone_type": 3 
      +"timezone": "America/Mexico_City" 
     } 
     3 => Carbon {#249 ▼ 
      +"date": "2016-05-22 00:00:00.000000" 
      +"timezone_type": 3 
      +"timezone": "America/Mexico_City" 
     } 
... 

I을 다음과 같이

내가 ->pluck() 방법을 시도 :

는이를 위해 나는 다음과 같은 시도 다음과 같이 요일 이름을 얻으려고했습니다.

$Daynames = $filtered->each(function($item,$key){ 
      return $item->myDates->format('l'); 
     }); 

그러나 나는 다음과 같은 오류가 발생했습니다 :

Undefined property: Illuminate\Support\Collection::$myDates

어떤 아이디어가 배열 또는 모음으로 만 dayNames라는를 얻을? 이것을 할 또 다른 방법이 있습니까?

답변

3

형식()은 날짜 컬렉션에 전화하는 동안 탄소 개체로 전화해야합니다. 이 사용 수집 파이프 라인을 달성하기 위해 다른 myDates의 모든 날짜를 수집을 가서 그들을 포맷 것이다 루프, 예컨대 :

$Daynames = []; 
$filtered->each(function($item,$key) use (&$Daynames) { 
    $item->each(function($date) use (&$Daynames) { 
    $Daynames[] = $date->format('l'); 
    }); 
}); 
+0

니스! 하지만 왜'$ Daynames'를 비워야합니까? '$ date-> format ('l') 각각을 출력하면 나는 그날의 이름을 볼 수있다. 그러나 배열은 비어있는 것처럼 보입니다. 나는'use ($ Daynames)'및'Return $ Daynames;를 시도했으며 어느 것도 작동하지 않는다. – Pathros

0

멋지고 우아한 방법이 필요합니다 :

$days = MyModel::all()->pluck('event_date')->map(function($date) { 
    return $date->format('l'); 
});