人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel で DBで取得したデータを年ごとにまとめる

● Laravel で DBで取得したデータを年ごとにまとめる(その1)

news_date が format() メソッドを使えるように、モデルファイルに

    protected $dates = ['news_date'];

を記述してから、

// 方法 1.
$model = \App\News::inActive();
$all_loop = $model->get();
$all_loop->map(function ($v) {
    $v['year'] = optional($v->news_date)->format("Y");
});        
$group_news_loop = $all_loop->groupBy('year');

● Laravel で DBで取得したデータを年ごとにまとめる(その2)

最下層のオブジェクトは Eloquentモデルではなく配列になります。
なのでこの方法はあまりお勧めしません。

$all_loop = \DB::table('news')
                    ->select(\DB::raw("*,DATE_FORMAT( news_date ,'%Y') as year"))
                    ->get();
$group_news_loop = $all_loop->groupBy('year');
dd( $group_news_loop );
No.1607
10/24 17:06

edit