【发布时间】:2019-08-20 16:43:07
【问题描述】:
$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内部连接 reviewsreviews.restaurant_id=restaurants.idgroup byrestaurants.id有 AVG(reviews.rating) >= 0 和 AVG(reviews.rating) average_rating desc limit 5 offset 0)
谁能告诉我为什么?
【问题讨论】: