$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
内部联接reviews
。restaurant_id
=restaurants
。id
由restaurants
。id
分组 AVG(reviews.rating)> = 0和AVG(reviews.rating)<= 5阶average_rating
描述限制5偏移量0)
谁能告诉我为什么?
答案 0 :(得分:2)
round
部分:
ROUND(AVG(reviews.rating) as average_rating)
应该看起来像这样:
ROUND(AVG(reviews.rating)) as average_rating