我构建了一个复杂的搜索查询,在我引入距离计算之前效果很好。
我就是这样做的。
$profiles = Profile:: ... ... ...
...
...
...
...
$lat = Auth::User()->profile->latitude;
$lng = Auth::User()->profile->longitude;
$gr_circle_radius = 6371;
/*
* Generate the select field for disctance
*/
$disctance_select = sprintf(
"*, ( %d * acos( cos( radians(%s) ) " .
" * cos( radians( latitude ) ) " .
" * cos( radians( longitude ) - radians(%s) ) " .
" + sin( radians(%s) ) * sin( radians( latitude ) ) " .
") " .
") " .
"AS distance",
$gr_circle_radius,
$lat,
$lng,
$lat
);
$profiles = $profiles->select( DB::raw($disctance_select) )
->having( 'distance', '<', 80 )
->orderBy( 'distance', 'ASC' )
->paginate(12);
当我使用paginate()时,我收到此错误
Column not found: 1054 Unknown column 'distance' in 'having clause'
如果我使用get(),查询可以正常工作,但我得到了
Call to undefined method Illuminate\Database\Eloquent\Collection::links()
..我真的很喜欢o有轻松的分页工作。
对于如何解决这个问题有什么好的建议吗?我一直在寻找,没有发现任何有用的东西。
显然,使用时有雄辩的问题吗?
非常感谢所有帮助。
答案 0 :(得分:0)
如果您的问题仍未解决,请使用->simplePaginate(12)
代替>paginate(12)