2016-12-27 4 views
0

私は月を表示したいが、月の数を追加するためのキーと名前の月を追加するための値にしたい。私はこのコードを持っていますが、問題はそれをforeachして$キーをディスパイすると、いつも私に名前を与えることです。どのような提案を私はこれを修正することができますか?キーとして値を追加するにはどうすればいいですか?

$archive = []; 
    $archive_current_year = Articles::where('approved',1)->whereBetween('created_at', [ 
     Carbon::now()->startOfYear(), 
     Carbon::now()->endOfYear(), 
    ])->get()->groupBy(function($item) { 
     $archive[Carbon::createFromFormat('Y-m-d H:i:s', $item->created_at)->month] = Carbon::createFromFormat('Y-m-d H:i:s', $item->created_at)->formatLocalized('%B'); 

    return $archive; 
    }); 

答えて

1

アレイでグループ化することはできません。コールバックから文字列を返す必要があります。

あなたは月ごとにグループ化したい場合、それは次のようになります。

$archive = Articles::where('approved',1)->whereBetween('created_at', [ 
    Carbon::now()->startOfYear(), 
    Carbon::now()->endOfYear(), 
])->get(); 

$archive_by_month->groupBy(function($item) { 
    return Carbon::createFromFormat('Y-m-d H:i:s', $item->created_at)->month; 
}); 

また、あなたはLaravel created_atではデフォルトで、groupByCarbonインスタンスを作成する必要はありませんし、updated_atはすでにCarbonインスタンスです。

return $item->created_at->month; 

正常に動作するはずです。

関連する問題