Laravelでcreated_atの日付ごとにグループ化する方法


  1. EloquentのgroupByメソッドを使用する方法:

    $posts = Post::groupBy(DB::raw('DATE(created_at)'))->get();

    この方法では、groupByメソッドにDATE関数を使用して、created_atカラムの日付部分のみでグループ化します。

  2. コレクションのgroupByメソッドを使用する方法:

    $posts = Post::all()->groupBy(function ($post) {
       return $post->created_at->format('Y-m-d');
    });

    この方法では、groupByメソッドにクロージャを渡し、created_atの日付を指定の形式にフォーマットしてグループ化します。

  3. データベースクエリのグループ化を使用する方法:

    $posts = DB::table('posts')
              ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as count'))
              ->groupBy('date')
              ->get();

    この方法では、selectメソッドでDATE(created_at)を選択し、groupByメソッドで日付ごとにグループ化します。必要に応じて、カウントなどの集計関数も使用できます。