LaravelのEloquentのデータ取得について
DBからデータの取得方法について困っています。
目的:各投稿者の過去1日の投稿数を集計し、投稿数が多い順に並び替え、Vueに渡したい。
(各配列の要素ごとに過去1日の投稿数を集計(合計)し、投稿数が多い順に各配列を並び替えたい)
現状
・テーブルA(投稿者基本データ)、とテーブルB(投稿数データ)が用意されている
●テーブルAのカラム(id、user_id、username、created_at、updated_at)
●テーブルBのカラム(id、user_id、post_count、created_at、updated_at)
※テーブルBの post_count は数値型で1時間ごとの投稿数が数値で入っています。
・テーブルAとテーブルBは1対多の関係と考え、
テーブルAには、モデルにhasmeny
テーブルBには、モデルにbelongsTo
を使って紐付けを行っています。
Eloquentを使い、次の様に書いたのですが、ここから合計の出し方が分からなく詰まっています。
php
1 $DayRanking = Postuser:: 2 with(['post_counts' => function($q){ 3 $q->whereDate('created_at', date("Y-m-d", strtotime("-1 day"))); 4 }])->get();
中身を確認すると、下記の様に1人に対する投稿数のデータが紐づいています
JSON
1 "DayRankingData": [ 2 { 3 "id": 1, 4 "user_id": "1", 5 "user_id": "Aさん", 6 "created_at": "2020-04-26 16:24:39", 7 "updated_at": "2020-05-15 00:00:03", 8 "post_counts": [ 9 { 10 "id": 1, 11 "user_id": "1", 12 "post_count": "4", 13 "created_at": "2020-05-14 00:40:03", 14 "updated_at": "2020-05-14 00:40:03" 15 }, 16 { 17 "id": 2, 18 "user_id": "1", 19 "post_count": "10", 20 "created_at": "2020-05-14 00:40:03", 21 "updated_at": "2020-05-14 00:40:03" 22 } 23 ] 24 },
この様にしたいです
JSON
1 "DayRankingData": [ 2 { 3 "id": 1, 4 "user_id": "1", 5 "user_id": "Aさん", 6 "created_at": "2020-04-26 16:24:39", 7 "updated_at": "2020-05-15 00:00:03", 8 "post_counts": [ 9 { 10 "user_id": "1", 11 "post_count": "14", 12 "created_at": "2020-05-14 00:40:03", 13 } 14 }, 15
・・Aさん、Bさん、Cさんと続き、post_countが多い順に並び替えがしたいのですが、
クエリビルダを使用して書くにも、うまくできず、いい方法が思いつきません。
また、投稿日時(post_countsのcreated_at)は一番最後の値だけ残したいです。
何かいい方法があればご教授頂きたいです。
何卒よろしくお願いします。
larabelバージョン:Laravel5.8
仕様しているDB:MySQL
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。