Laravelでリレーション先の数の合計を数えて一覧に表示する方法【withCount】
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
Laravel でリレーション先の数の合計を数えて一覧に表示する方法をやっていきます。withCount を使えば簡単に出来ます。
どんなときに使う可能性がある?
例えば、
① ユーザーに紐づく Post の数をユーザーの一覧に表示したいとき。(⇦ 今回はこれやります。)
② 一覧にいいね数やフォロー数を表示したいとき。
検証環境
Laravel 6
リレーション先の合計を数える
今回は、「ユーザーが投稿した posts がいくつあるか」の合計をユーザー一覧に表示します。
このようにユーザー1人に対して posts が多数ある場合は、1対多のリレーションをすれば OK です。
1対多のリレーションについては、
⇨Laravel で1対多のリレーションをして保存、表示する方法【hasMany】
でまとめています。
モデルにリレーションを書きます。
User.php
public function posts()
{
return $this->hasMany('App\Post');
}
コントローラーに書きます。
Controller
public function index()
{
$users = User::withCount('posts')->take(5)->get();
dd($users);
}
dd で出力した結果は、ユーザーの一覧が出力されるわけですが、
ユーザー一人一人のデータがこちらのスクショの通りになります。
このように、
posts_count => 100
というように、「リレーション関数名_count」という key 名で、リレーション先の合計数が含まれています。
めっちゃ便利で笑う。
⇨Laravel の withCount が取得できないを解決する方法
まとめ
いかがだったでしょうか?
withcount を使って、リレーション 先の合計数を数えてみました。
ところで、Laravel8 に対応した本が出ているみたいです。
Laravel の本を買う予定なら、これがいいんじゃないでしょうか?
人気記事
PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする
関連記事
Laravel で1対多のリレーションをして保存、表示する方法【hasMany】
Laravel で多対1のリレーションをして保存、表示する方法【belongsTo】