sql laravel中不正确的参数来回合

时间:2019-03-29 17:18:49

标签: sql laravel

$query = $this->restaurant->join('reviews', 'reviews.restaurant_id', '=', 'restaurants.id');
        $query = $user_id == null ? $query : $query->where("user_id", $user_id);

        $query = $query->select('restaurants.*')
                        ->selectRaw('ROUND(AVG(reviews.rating) as average_rating)')
                        ->groupBy('restaurants.id')
                        ->havingRaw('AVG(reviews.rating) >= ?', [$request->from_rating])
                        ->havingRaw('AVG(reviews.rating) <= ?', [$request->to_rating])
                        ->orderByDesc("average_rating")
                        ->paginate(
                            $this->perPage, 
                            ['id', 'name', 'image', 'description', 'filesystem', 'created_at'], 
                            'page', 
                            $request->page
                        );

        return $query;

我的查询如下所示。事情是我想使用ROUND。当我运行它时,它告诉我

  

SQLSTATE [42000]:语法错误或访问冲突:1583错误   调用本机函数“ round”(SQL:选择)中的参数   restaurants。*,ROUND(AVG(reviews.rating)as average_rating)来自   restaurants上的reviews内部联接reviewsrestaurant_id =   restaurantsidrestaurantsid分组   AVG(reviews.rating)> = 0和AVG(reviews.rating)<= 5阶   average_rating描述限制5偏移量0)

谁能告诉我为什么?

1 个答案:

答案 0 :(得分:2)

round部分:

ROUND(AVG(reviews.rating) as average_rating) 

应该看起来像这样:

ROUND(AVG(reviews.rating)) as average_rating