【问题标题】:Incorrect parameters to 'round' in sql laravelsql laravel 中“round”的参数不正确
【发布时间】: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 内部连接 ​​reviews reviews.restaurant_id = restaurants.id group by restaurants.id 有 AVG(reviews.rating) >= 0 和 AVG(reviews.rating) average_rating desc limit 5 offset 0)

谁能告诉我为什么?

【问题讨论】:

    标签: sql laravel


    【解决方案1】:

    round 部分:

    ROUND(AVG(reviews.rating) as average_rating) 
    

    应该是这样的:

    ROUND(AVG(reviews.rating)) as average_rating
    

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 2014-04-08
      • 2015-09-21
      • 1970-01-01
      • 2012-07-03
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多