Laravel 5.3:语法错误或访问冲突:1463非分组字段'distance'用于HAVING子句

use*_*366 11 mysql laravel eloquent

将整个源移动到5.3版本之后出现了这个错误,现在我已经抓了两个多小时了.

所以我有这种雄辩的查询:

POI::select('*', DB::raw("SQRT( POW((x - {$this->x}),2) + POW((y - {$this->y}),2) ) AS distance"))
        ->where('status', Config::get('app.poi_state.enabled'))
        ->whereNotIn('id', $excludePOIList)
        ->having('distance', '<=', $distance)
        ->orderBy('distance')->get();
Run Code Online (Sandbox Code Playgroud)

它在升级之前找到它现在它抛出:

语法错误或访问冲突:1463非分组字段'distance'用于HAVING子句(SQL:select*,SQRT(POW((x - 860.0000),2)+ POW((y - 105.0000),2))AS从远处poi其中status= 1和id(1)中具有不distance<= 6顺序由distanceASC)

我想检查我的服务器上是否启用了ONLY_FULL_GROUP_BY模式,但它不是......

SELECT @@ sql_mode NO_ENGINE_SUBSTITUTION

相同的查询在MySQL工作台中工作正常.这是怎么回事?

reb*_*vid 44

检查mysql连接中的config/database.php文件,其中strict为false:

'strict' => false,
Run Code Online (Sandbox Code Playgroud)

如果是真的,请输入false.

  • 这不应该是正确的答案,禁用严格模式不是解决方案,只能避免问题... (4认同)
  • 就是这样,显然在L 5.3中默认启用了严格模式 (3认同)