获得Laravel评级系统的平均值

时间:2017-06-15 15:03:21

标签: laravel laravel-5 laravel-5.4

目前正在尝试根据评论获得每个产品的整体平均值。但我的代码似乎是在总结所有评级,而不是评论与产品相关的评级。

我的表是:

产品:ID,名称,价格 评论:ID,评论,product_id(fk),ratings_id(fk) 评分:ID,评分

class Product extends Model {

    public function reviews()
    {
        return $this->hasMany('App\Review','products_id');
    }
  }



 class Rating extends Model
   {
    //
    public function reviews(){
        $this->hasMany('App\Review');
    }
   }

class Review extends Model
{
    //
    public function products(){
        return $this->belongsTo('App\Product');
    }

    public function ratings()
    {
        return $this->belongsTo('App\Rating');
    }

}

ProductsController:

   public function getSingle($slug )
    {
        //fetch from the database based on slug.
        $product = Product::where('slug', '=', $slug)->first();


        //return view
        return view('products.single')->withProduct($product);

    }

然后我的观点以及我遇到问题检索整个评级列的平均值而不仅仅是此产品的位置。:

@foreach($product->reviews as $reviews)

<h4>Rated: {{$reviews->ratings->sum('rating') / Count($product->reviews)}} </h4>
@endforeach      

我哪里出错了,为什么我没有达到某个产品评论的平均评分,而是所有产品的平均评价评分。

0 个答案:

没有答案