2017-12-12 3 views
0

Hallo, ich möchte die beliebtesten Posts erhalten, ich habe ein System erstellt, wo Sie über Post oder einen Kommentar abstimmen können. [+ 1, -1]Laravel 5.5 Get Beiträge Sortieren nach Summe der Stimmen

Vote Tabelle

  • integer: id - Abstimmung id

  • integer: MODEL_ID - Modell ID

  • string: Modell -Modell Name ["App/Post", "App/Kommentar"]

  • Ganzzahl: Wert - Wert der Abstimmung [-1,1]

Jetzt möchte ich Beiträge von Wertsumme bestellt bekommen. Aber ich blieb im Deadpool stecken. Hier ist mein tatsächlicher Code, funktioniert leider nicht.

DB::table('posts') 
->join('votes','posts.id','votes.model_id') 
->groupBy('votes.model_id') 
->where('model','App\Post') 
->select('posts.*','sum(\'votes.value\')') 
->get(); 

Antwort

0

Bitte lesen Sie das Handbuch vollständig Laravel query builder.

Sie müssen einen unformatierten Ausdruck verwenden, da er eine Aggregatfunktion besitzt.

DB::table('posts') 
    ->join('votes','posts.id','=','votes.model_id') 
    ->groupBy('votes.model_id') 
    ->where('model','App\Post') 
    ->selectRaw('posts.*, sum(votes.value) as sum_value') 
    ->get(); 
+0

Ja, aber wenn ich es laufen, wo ich Summe bekommen (‚votes.value‘) ". 0.0 Wenn i Summe ändert sie zu zählen, mir eine guten Preis geben – Manickus

+0

nur bearbeitet, Sie sind nicht erforderlich, um die Spalte zu zitieren – Ben

Verwandte Themen