2017-10-27 1 views
0

Ich versuche, über Beziehungen nur Durchschnitt zu erhaltenLaravel 5 bekommen Durchschnitt von Beziehung

, was ich tue, ist:

$user_detail=Users::withCount('followers')->withCount('followings')->withCount('posts')->with('ratings')->with('posts')->where('user_id',$user_id)->get(); 

public function ratings() 
{ 
    return $this->hasMany('\App\Reviews','review_user_id','user_id')->selectRaw('review_user_id, avg(rate) AS avg')->groupBy('review_user_id'); 
} 

Nun ist diese funktioniert, und was ich bekommen ist:

"followers_count": 0, 
"followings_count": 1, 
"posts_count": 1, 
"ratings": [ 
     { 
     "review_user_id": "2c61d7a0-7d05-11e7-8dab-6d6ba8a72982", 
     "avg": 3.25 
     } 
    ], 

Was ich will, ist:

"ratings": 3.25 

Jede Hilfe wäre willkommen.

PS: Laravel 5.2

+0

tun Warum Sie alle Beziehungen dann geladen werden. Sie können '$ user_detail = Benutzer :: selectRaw ('review_user_id, avg (rate) AS avg') -> groupBy ('review_user_id') -> get(); ' – Suraj

+0

[Eingeschränkte Lasten] (https://laravel.com/docs/5.5/eloquent-relationships#constraining-eager-loads). Rechts oben haben Sie __Eager laden spezifische Spalten__ - '$ users = App \ Book :: mit ('author: id, name') -> get();' – ljubadr

Antwort

0

Dies sollte es

return $this->hasMany('\App\Reviews','review_user_id','user_id')-> 
selectRaw('review_user_id, avg(rate) AS avg')-> 
groupBy('review_user_id') 
->pluck('avg'); 
Verwandte Themen