Laravel 4.2 - 当使用距离为时,分页失败

时间:2015-02-14 05:00:34

标签: laravel laravel-4 pagination eloquent query-builder

我构建了一个复杂的搜索查询,在我引入距离计算之前效果很好。

我就是这样做的。

        $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有轻松的分页工作。

对于如何解决这个问题有什么好的建议吗?我一直在寻找,没有发现任何有用的东西。

显然,使用时有雄辩的问题吗?

非常感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

如果您的问题仍未解决,请使用->simplePaginate(12)代替>paginate(12)