wb_sunny Solved wb_sunny
gavel
ユーザーランキングページを用意してみよ!!
PHP
Laravel
MySQL
thumb_up_alt
Good: 2
person
Haya Shiba
2020/06/23

まずは、月間でやってみるかな * 誰が一番投稿したか * 誰が一番回答したか(ほかの人の質問に対して) * 誰が一番コメントしたか(ほかの人の質問に対して) * いいね数 * ありがとう数
# 誰が一番投稿したか ``` public function getRankingBetweenMonth($year = null, $month = null) { $now = Carbon::now(); $startYear = $year ?? $now->year; $startMonth = $month ?? $now->month; return $this->createModel()->query() ->select( 'user_id', DB::raw('count(*) as count'), DB::raw("date_format(created_at, '%Y/%m') AS created_year_month")) ->whereYear('created_at', $startYear) ->whereMonth('created_at', $startMonth) ->groupBy('user_id', DB::raw('created_year_month')) ->limit(config('common.rankingLimit')) ->orderBy('count', 'desc') ->get(); } ``` OK laravelは、カスタムカラムをgroupByするときは、DB:raw()をつかわないといけないんだよね
person
Haya Shiba
2020-06-24 01:35:48
とりあえず、質問数(投稿数)は実装完了っと?? https://twitter.com/shibahayaBlog/status/1275643643949350913?s=20
person
Haya Shiba
2020-06-24 04:16:33
# ありがとう数をランキングしよう 他は、必要ないな? ``` SELECT user_id, sum(count) as sum FROM( SELECT user_id, count(*) as count from answer_thanks group by user_id UNION ALL SELECT user_id, count(*) as count from comment_thanks group by user_id ) AS tmp GROUP BY user_id; ``` このクエリで、ありがとう数は取れるので、LaravelフレームワークのEloquentを使って再現するか? https://qiita.com/wcareer/items/a0b690cfcfcd92aabf92 allを使えば、sortはないからいいね。 最後にsumでsortしたいしね?
person
Haya Shiba
2020-06-24 13:30:08
laravelで書くと結構長くなったな? ``` $now = Carbon::now(); $startYear = $year ?? $now->year; $startMonth = $month ?? $now->month; $first = DB::table('comment_thanks') ->select( 'user_id', DB::raw('count(*) as count'), DB::raw("date_format(created_at, '%Y/%m') AS created_year_month")) ->whereYear('created_at', $startYear) ->whereMonth('created_at', $startMonth) ->groupBy('user_id', DB::raw('created_year_month')); $second = DB::table('answer_thanks') ->select( 'user_id', DB::raw('count(*) as count'), DB::raw("date_format(created_at, '%Y/%m') AS created_year_month")) ->whereYear('created_at', $startYear) ->whereMonth('created_at', $startMonth) ->groupBy('user_id', DB::raw('created_year_month')) ->unionAll($first); return DB::table( DB::raw("({$second->toSql()}) as sub")) ->select('user_id', DB::raw('sum(count) as count')) ->groupBy('user_id') ->mergeBindings($second) ->limit(config('common.rankingLimit')) ->orderBy('count', 'desc') ->get(); ```
person
Haya Shiba
2020-06-24 13:56:44
hahahahahahah、違うわ? これありがとうを作成したユーザーだわwwwww????? まあでもいっか、ありがとうを上げたユーザーやさしいユーザーをらんきんぐするのもいいでしょ?
person
Haya Shiba
2020-06-24 14:22:59
×
😄😃😀😊😉😍😘😚😗😙😜😝😛😳😁😔😌😒😞😣😢😂😭😪😥😰😅😓😩😫😨😱😠😡😤😖😆😋😷😎😴😵😲😟😦😧😈👿😮😬😐😕😯😶😇😏😑👲👳👮👷💂👶👦👧👨👩👴👵👱👼👸😺😸😻😽😼🙀😿😹😾👹👺🙈🙉🙊💀👽💩🔥🌟💫💥💢💦💧💤💨👂👀👃👅👄👍👎👌👊👋👐👆👇👉👈🙌🙏👏💪🚶🏃💃👫👪👬👭💏💑👯🙆🙅💁🙋💆💇💅👰🙎🙍🙇🎩👑👒👟👞👡👠👢👕👔👚👗🎽👖👘👙💼👜👝👛👓🎀🌂💄💛💙💜💚💔💗💓💕💖💞💌💘💋💍💎👤👥💬👣💭🐶🐺🐱🐭🐹🐰🐸🐯🐨🐻🐷🐽🐮🐗🐵🐒🐴🐑🐘🐼🐧🐦🐤🐥🐣🐔🐍🐢🐛🐝🐜🐞🐌🐙🐚🐠🐟🐬🐳🐋🐄🐏🐀🐃🐅🐇🐉🐎🐐🐓🐕🐖🐁🐂🐲🐡🐊🐫🐪🐆🐈🐩🐾💐🌸🌷🍀🌹🌻🌺🍁🍃🍂🌿🌾🍄🌵🌴🌲🌳🌰🌱🌼🌐🌞🌝🌚🌑🌒🌓🌔🌕🌖🌗🌘🌜🌛🌙🌍🌎🌏🌋🌌🌠🌀🌁🌈🌊🎍💝🎎🎒🎓🎏🎆🎇🎐🎑🎃👻🎅🎄🎁🎋🎉🎊🎈🎌🔮🎥📷📹📼💿📀💽💾💻📱📞📟📠📡📺📻🔊🔉🔈🔇🔔🔕📢📣🔓🔒🔏🔐🔑🔎💡🔦🔆🔅🔌🔋🔍🛁🛀🚿🚽🔧🔩🔨🚪🚬💣🔫🔪💊💉💰💴💵💷💶💳💸📲📧📥📤📩📨📯📫📪📬📭📮📦📝📄📃📑📊📈📉📜📋📅📆📇📁📂📌📎📏📐📕📗📘📙📓📔📒📚📖🔖📛🔬🔭📰🎨🎬🎤🎧🎼🎵🎶🎹🎻🎺🎷🎸👾🎮🃏🎴🀄🎲🎯🏈🏀🎾🎱🏉🎳🚵🚴🏁🏇🏆🎿🏂🏊🏄🎣🍵🍶🍼🍺🍻🍸🍹🍷🍴🍕🍔🍟🍗🍖🍝🍛🍤🍱🍣🍥🍙🍘🍚🍜🍲🍢🍡🍳🍞🍩🍮🍦🍨🍧🎂🍰🍪🍫🍬🍭🍯🍎🍏🍊🍋🍒🍇🍉🍓🍑🍈🍌🍐🍍🍠🍆🍅🌽🏠🏡🏫🏢🏣🏥🏦🏪🏩🏨💒🏬🏤🌇🌆🏯🏰🏭🗼🗾🗻🌄🌅🌃🗽🌉🎠🎡🎢🚢🚤🚣🚀💺🚁🚂🚊🚉🚞🚆🚄🚅🚈🚇🚝🚋🚃🚎🚌🚍🚙🚘🚗🚕🚖🚛🚚🚨🚓🚔🚒🚑🚐🚲🚡🚟🚠🚜💈🚏🎫🚦🚥🚧🔰🏮🎰🗿🎪🎭📍🚩🇨🇳🇩🇪🇪🇸🇫🇷🇬🇧🇮🇹🇯🇵🇰🇷🇷🇺🇺🇸1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣🔟🔢#⃣🔣🔠🔡🔤🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿🔄🔼🔽🆗🔀🔁🔂🆕🆙🆒🆓🆖📶🎦🈁🈯🈳🈵🈴🈲🉐🈹🈺🈶🈚🚻🚹🚺🚼🚾🚰🚮🅿🚭🈷🈸🈂🛂🛄🛅🛃🉑🆑🆘🆔🚫🔞📵🚯🚱🚳🚷🚸💟🆚📳📴🅰🅱🆎🅾💠🔯🏧💹💲💱©®🔝🔚🔙🔛🔜🔃🕛🕧🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕖🕗🕘🕙🕚🕡🕢🕣🕤🕥🕦💮💯🔘🔗🔱🔺🔲🔳🔴🔵🔻🔶🔷🔸🔹