2017-05-19 53 views
1

ILaravelユーザーIDでフォロワーを数える方法は?

public function getFollower(Request $request){ 

     $userId = $request->get('user_id'); 

     $artists = DB::table('artists') 
     ->select('artists.id', 'artists.title as name ','artists.src as poster','followers.user_id',DB::raw('COUNT(followers.user_id) as followers')) 
     ->leftjoin('followers', 'artists.id','=', 'followers.artist_id') 
     ->where('artists.status',0) 
     ->groupBy('followers.artist_id') 
     ->orderBy('followers.id', 'desc') 
     ->get(); 

    return Response()->json(['data' => $artists], 200); 
} 

以下laravelのjqueryのを持って、私は私が使用している場合

data: [ 
    { 
     "id": 3, 
     "name ": "Artist 3", 
     "poster": "", 
     "user_id": 1, 
     "followers": 1 
    }, 
    { 
     "id": 2, 
     "name ": "Hello Artist 2", 
     "poster": "", 
     "user_id": 1, 
     "followers": 1 
    }, 
    { 
     "id": 1, 
     "name ": "Thai", 
     "poster": "", 
     "user_id": 3, 
     "followers": 10 
    } 
    ] 

以下のよう結果を取得したい - 結果によって>ここで、( 'followers.user_id'、$ userIdを)を取得しますfollowers: 1のみ

誰もが、私は->where('followers.user_id',$userId)

を使うことができ、上記のようになり得ることができる方法私を助けることができます210

ありがとう!

+0

私がログインしたとき私はそれらを辿り、それぞれのアーティストは合計のフォロワー数を表示します –

+0

私はこのfuncを使用すると - >(followers.user_id '、1)私はフォロワーの結果をカウントできませんでしたどうして ? –

+0

これをハードコーディングする代わりに関係を使用してみませんか? – Demonyowh

答えて

1

EDITED

これは、あなたが何だろうが

のMODEL ARTIST

protected $appends = ['followers_count']; 

public function followers() 
{ 
    return $this->belongsToMany('App\User','follower','artist_id','user_id'); 
} 

public function getFollowersCountAttribute() 
{ 
    return count($this->followers); 
} 

のMODEL USER

protected $appends = ['followed_count']; 
public function artists() 
{ 
    return $this->belongsToMany('App\Artist','follower','user_id','artist_id'); 
} 

public function getFollowedCountAttribute() 
{ 
    return count($this->artists); 
} 
..です多くの関係に多くのです あなた CONTROLLERで

public function getArtists(Request $request) 
{ 
    $user_id = $request->get('user_id'); 
    // get the user using the user_id 
    $follower = User::with('artists')->find($user_id); 
    return response()->json(['data' => $follower ], 200); 
} 

これは

{ 
    id: 1, 
    name:'You', 
    followed_count: 2, 
    artists: [ 
     { 
      id:1, 
      name: 'Demonyowh', 
      follower_count: 9999, 
     }, 
     { 
      id:5, 
      name: 'Brian', 
      follower_count: 9999, 
     }, 
    ], 
} 
+0

ありがとうございました! user_idでアーティストを取得するにはどうすればよいですか? –

+0

ofcouse ..しばらくしてから私の編集を参照してください – Demonyowh

+0

私のデータベースに私は3つのartisstをたどっていますが、私は唯一のアーティストの結果を得ます –

0

のようなデータの配列は、ここで

1. users 
    - id 
    - name 

2. follower 
    - id 
    -user_id 
    -artist_id 

3. artists 
    -id 
    -name 
    -src 

をいただき、ありがとうございます、私のテーブル構造で戻りますヘルプ

+0

は、それらがどのように関連しているかを説明してください。 – Demonyowh

+0

フォロワーはアーティストに関連し、ユーザーに関連しています。 –

+0

フォロワー多数のアーティストとフォロワーが1人のユーザーに多数 –

関連する問題