2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

①Laravelのクエリビルダー

Last updated at Posted at 2024-09-01

クエリビルダーとは

SQLの命令文(クエリ)を作成して実行するための機能

やりたいこと

・各月ごとに投稿されたブログ数の集計

まず

$blogCounts = DB::table('blogs') 

Laravelのクエリビルダーを使用してblogsテーブルに対してクエリを構築します

->select(
    DB::raw("DATE_FORMAT(created_at, '%Y-%m') as month"),
    DB::raw("COUNT(*) as blog_count")
    )

DB::raw 生のSQLを直接クエリへ組み込むために使用します
created_atを'2024-09-01 12:34:56'→'2024-09'として、monthというエイリアスにし、
その月のブログ投稿数をカウントして、blog_countというエイリアスにします

※DATE_FORMAT 関数を使用すると引数に指定した日付を
指定のフォーマットで整形した文字列にして取得することができます

->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m')"))
->orderBy('month', 'desc')
->get();

月ごとにグループ化をして、その結果を月別に降順で表示します

$blogCounts = DB::table('blogs')
            ->select(
                DB::raw("DATE_FORMAT(created_at, '%Y-%m') as month"),
                DB::raw("COUNT(*) as blog_count")
            )
            ->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m')"))
            ->orderBy('month', 'desc')
            ->get();

このクエリを実行すると

[
 {
  "month": "2024-09",
  "blog_count": 10
  },
 {
  "month": "2024-08",
  "blog_count": 7
  },
]

こんな感じでデータを取得することができました

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?