简体   繁体   English

使用 lrlaravel eloquent 为用户获取平均评分

[英]Get Average of rating using lrlaravel eloquent for users

I am getting all user.我得到了所有用户。 Each user having multiple rating.每个用户有多个评分。 I have to find out average of each user rating.我必须找出每个用户评分的平均值。 Here is my code as below:这是我的代码如下:

$specializationObjModal = DoctorsModal::with('user')->with('doctorSpecialization')->get();
      

      $data = array();
            foreach($specializationObjModal as $dataObj)
            {
                $data[]['user_id'] = $dataObj->user_id;
            }
            $ids = $data;
            $doctor_rating = UserRatings::select('rating','rated_for_user_id')
            ->whereIn('rated_for_user_id', $ids)
            ->where('rating', '<>', '')
            ->get();
           
            $sum = 0;
            $count = 0;
            foreach( $doctor_rating as $rating){
             
                if($rating->rated_for_user_id){
                 
                    $count++;
                    $sum += $rating->rating;
                }
            }
    
           return $avg = $sum / $count;

According to my code I am getting average of all user rating.根据我的代码,我得到了所有用户评分的平均值。 But I want average of each user Rating according to their Id's because every user having multiple rating and I have to calculate each user rating.但我希望根据他们的 ID 对每个用户评分进行平均,因为每个用户都有多个评分,我必须计算每个用户评分。 Please tell me where I am Wrong.请告诉我我错在哪里。

as you want avg_rating on user collection so因为你想要用户集合上的avg_rating所以

in you User.php在你User.php

protected $appends = ['avg_rating'];

public function getAvgRatingAttribute()
{
    return UserRatings::where('rated_for_user_id', $this->id)
        ->avg('rating');
}

then in your this collection user object will have new key avg_rating那么在你的这个集合中,用户 object 将有新的密钥avg_rating

$specializationObjModal = DoctorsModal::with('user')->with('doctorSpecialization')->get();

ref link参考链接

https://laravel.com/docs/8.x/eloquent-serialization#appending-values-to-json https://laravel.com/docs/8.x/queries#aggregates https://laravel.com/docs/8.x/eloquent-serialization#appending-values-to-json https://laravel.com/docs/8.x/queries#aggregates

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM