Laravel查询,foreach函数删除项目然后分页

时间:2015-06-20 04:59:57

标签: php laravel laravel-4 laravel-5

用户搜索某公里半径范围内的个人资料,即50公里我运行的函数,它使用纬度/经度值来检索结果(这是在方形内的粗略搜索而不是直线距离),然后我对结果进行分页。

$query = $this->filterNearby($query, $geocode); $query = $query->paginate(10);

但是对于每个查询,我需要使用大圆公式运行适当的距离(以获得准确的50公里)并且搜索的人可能只愿意从他们的位置旅行20公里,所以我需要从查询中删除这些。

我曾尝试在分页之前执行$query = $query->get(),然后为每个分区删除项目,但分页不起作用。我试图创建一个新的Paginator,但我不确定这是如何工作到视图的?

最新代码:

if (\Request::segment(2) == "jobs")
            {                   
                $query = $this->searchJob($search_strategy);
                $query = $this->filterNearbyJob($query, $geocode);
                $query = $this->filterJob($query);

                $query = $query->get();

                // Foreach function to go here to get accurate distance between two points and remove from query results

                $paginate = new Paginator($query, count($query), 10);  

                $category = $this->getCategoryURL($search_strategy);                
                $sub_categories = ServiceSubCategory::where('sub_category_url', '=', $search_strategy)->first();

                return view('search.job')
                    ->with('category', $category)
                    ->with('sub_categories', $sub_categories)
                    ->with('search_results', $paginate);    
            }

1 个答案:

答案 0 :(得分:0)

您无法在get之前致电paginate,事实上,您只能致电其中一位。您应该使用数据库查询进行过滤,或考虑制作Illuminate\Pagination\PaginatorIlluminate\Pagination\LengthAwarePaginator

的实例