我有一个用户表和一个评论表。
在我的评论表中,有一个" star_rating"柱。
我可以获得平均值" star_rating"使用以下查询为用户评分:
$star_rating = Review::where('artist_id', $user->id)->avg('star_rating');
然而,当我在刀片中打印出一堆用户时,这并不能很好地工作(我想在他们的名字旁边显示他们的平均star_rating)。
这就是为什么我想在User.php
模型中设置一个函数,我可以调用该函数来获得用户的平均星级评分。
public function getAvgStarRating() {
return $this-> // logic goes here //;
}
答案 0 :(得分:0)
在您的用户模型中添加此关系:
public function reviews()
{
return $this->hasMany(Review::class, 'artist_id', 'id');
}
然后添加此方法以获得星级评分的平均值
public function getAvgStarRating()
{
return $this->reivews->avg('star_rating');
}
如果您需要显示一组用户评分,请先加急评论(效率更高)
$users = User::with('reviews')->get();
然后
foreach($users as $user) {
$user->getAvgStarRating();
}