Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

groupByでデータをまとめて、特定のデータの数を数える方法が知りたい

解決したいこと

groupByでデータをまとめて、特定のデータの数を数える方法が知りたい

現在、LaravelでTwitterのようなアプリを作っています。
投稿についたコメント数をカウントして表示する機能を作成しているのですが、思い通りのデータをカウントできず困ってます。
groupByでデータをまとめて、特定のデータ(id)の数を数えたいのですが、良い方法がわかりません。
アドバイスをいただけると幸いです。

コントローラ(抜粋)

$reply = Reply::whereNull('deleted_at')
                ->groupBy('host_id')
                ->count();

テーブル

ki-ta.jpg

groupBy('host_id')で絞って、host_idごとにidの数を数えたいんです。
上記のテーブルの場合、host_idが5の場合はidが3件(内1件はdeleteしているので、実質2件)

自分で試したこと

①where句を使用して、うまく指定しようとしましたが妙案なくかないませんでした。

何かアドバイス頂けると幸いでございます。
よろしくお願いいたします。

0

1Answer

解決済み。

  $counts = \DB::table('records')
                ->join('replies', 'replies.host_id','=','records.id')
                ->whereNull('replies.deleted_at')
                ->groupBy('replies.host_id')
                ->get(['replies.host_id',\DB::raw('count(replies.host_id) as reply')]);

get()内の処理をすることで、思い通りの処理が可能になりました。
get()内でcountを使えば良かった話でした。

1Like

Your answer might help someone💌