2017-05-19 4 views
1

Ich habe Laravel jquery unterLaravel Wie man Zählfolger durch Benutzeridentifikation erhält?

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); 
} 

I Ergebnis wie unten

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 
    } 
    ] 

Wenn ich bekommen -> where ('followers.user_id', $ userId) nach Ergebnis erhalten followers: 1 nur

Wer kann mir helfen, wie kann ich das Ergebnis als oben, dass bekomme ich ->where('followers.user_id',$userId)

verwenden können 210

Danke!

+0

wenn ich mich eingeloggt habe, möchte ich Künstler bekommen, denen ich gefolgt habe und jeder Künstler zeige Anzahl totaler Follower –

+0

Wenn ich diese Funktion verwende -> where ('followers.user_id', 1) konnte ich Follower Ergebnis nicht zählen nur 1 Warum ? –

+0

Warum nicht Beziehung statt Hardcoding verwenden? – Demonyowh

Antwort

1

EDITED Dies ist eine viele zu viele Beziehung .. was Sie tun werden, ist

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); 
} 

in Ihrem 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); 
} 

dies wie Sie eine Reihe von Daten zurückgibt

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

Vielen Dank für Ihre Hilfe! Kannst du ändern, wie kann ich Künstler von user_id bekommen? –

+0

ofcouse .. siehe meine Bearbeitung nach einer Weile – Demonyowh

+0

In meiner Datenbank habe ich 3 artist gefolgt, aber ich bekomme nur 1 Künstler Ergebnis –

0

Hier ist meine Tabellenstruktur

1. users 
    - id 
    - name 

2. follower 
    - id 
    -user_id 
    -artist_id 

3. artists 
    -id 
    -name 
    -src 

Danke für Hilfe

+0

bitte erklären Sie mir, wie sie verwandt sind .. – Demonyowh

+0

Anhänger im Zusammenhang mit Künstlern und bezogen auf Benutzer. –

+0

Anhänger viele zu einem Künstler und Anhänger viele zu einem Benutzer –

Verwandte Themen