簡體   English   中英

使用 lrlaravel eloquent 為用戶獲取平均評分

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

我得到了所有用戶。 每個用戶有多個評分。 我必須找出每個用戶評分的平均值。 這是我的代碼如下:

$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;

根據我的代碼,我得到了所有用戶評分的平均值。 但我希望根據他們的 ID 對每個用戶評分進行平均,因為每個用戶都有多個評分,我必須計算每個用戶評分。 請告訴我我錯在哪里。

因為你想要用戶集合上的avg_rating所以

在你User.php

protected $appends = ['avg_rating'];

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

那么在你的這個集合中,用戶 object 將有新的密鑰avg_rating

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

參考鏈接

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