実現したいこと
「ゲーマーに人気なデバイスランキング」を知ることができるサイトをLaravelで作っています。
現在「PUBGをプレイしている人に人気のデバイスランキング」を表示するための処理を作っているのですが、わからない部分があるので質問します。
ランキングを作るためにwithCountでデバイスのフォロワー数をカウントしながらデバイス一覧を取得しようと思うのですが、この時**「PUBGをプレイしているユーザー」**という条件つきでフォロワー数をカウントしたいです。
分かりやすく言い換えると、(PUBGをフォローしている && デバイスをフォローしている)←こんなユーザーをカウントしたいです。
どのように処理を書けばいいか教えてください。
前提
「Userモデル」は「Gameモデル」「Deviceモデル」とそれぞれリレーションしています。
- ユーザーは自身がプレイしているゲームをフォローしています。
- ユーザーは自身が使用しているデバイスをフォローしています。
modelUser
1public function game_followings(){ 2 return $this->belongsToMany(Game::class, 'game_follow', 'user_id', 'game_id')->withTimestamps(); 3} 4 5public function device_followings(){ 6 return $this->belongsToMany(Device::class, 'device_follow', 'user_id', 'device_id')->withTimestamps(); 7}
試したこと
こんな風に実装できそうだなと、考えてみましたがDeviceモデル内でどのような処理をすれば良いのか分からず...。
Controller
1$query = Device::withCount('pubg_followers')->orderBy('pubg_followers_count', 'desc'); 2 3$devices = $query->get();
モデル
Device
1public function pubg_followers{ 2 // pubgをフォローしている&&デバイスをフォローしている という人を取得したい 3}
補足情報(バージョンなど)
Laravel 6.0
SQLiteを使用
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。