[英]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.