【发布时间】:2018-12-28 16:10:06
【问题描述】:
代码:
if ($request->going){
if($request->lattitude && $request->longitude){
$CurrentIplat = $request->lattitude;
$CurrentIplon = $request->longitude;
$ads1 = DB::table('ads')
->leftJoin('categories', 'ads.category_id', '=', 'categories.id')
->select(
'ads.*','categories.category_name',
DB::raw("( 6371 * acos( cos( radians('{$CurrentIplat}') ) * cos( radians( ads.Latitude ) ) * cos( radians( ads.Longtitute ) - radians({$CurrentIplon}) ) + sin( radians({$CurrentIplat}) ) * sin( radians( ads.Latitude ) ) ) ) AS distance")
)
->where('ads.domain',$this->domain)
->groupBy('ads.id')
->orderBy('distance')
->having('distance','<','500')
->get();
}
}
提供适当的输出。
使用 paginate() 时
if ($request->going){
if($request->lattitude && $request->longitude){
$CurrentIplat = $request->lattitude;
$CurrentIplon = $request->longitude;
$ads1 = DB::table('ads')
->leftJoin('categories', 'ads.category_id', '=', 'categories.id')
->select(
'ads.*','categories.category_name',
DB::raw("( 6371 * acos( cos( radians('{$CurrentIplat}') ) * cos( radians( ads.Latitude ) ) * cos( radians( ads.Longtitute ) - radians({$CurrentIplon}) ) + sin( radians({$CurrentIplat}) ) * sin( radians( ads.Latitude ) ) ) ) AS distance")
)
->where('ads.domain',$this->domain)
->groupBy('ads.id')
->orderBy('distance')
->having('distance','<','500')
->paginate(10);
}
}
它抛出
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'distance' in 'having clause' (SQL: select count(*) as aggregate from `ads` left join `categories` on `ads`.`category_id` = `categories`.`id` where `ads`.`domain` = nz group by `ads`.`id` having `distance` < 5000)
【问题讨论】:
-
当您添加分页部分时,选择重置为`count(*)作为聚合`以使查询分页并且包含距离的选择原始不存在
-
那么,您的意思是选择条件不适用于分页?我很迷惑。你能改写一下吗?
标签: php laravel-5 laravel-5.3 laravel-query-builder laravel-pagination