【问题标题】:Laravel query, foreach function to remove items then paginateLaravel查询,foreach函数删除项目然后分页
【发布时间】:2015-06-21 08:26:22
【问题描述】:

用户搜索特定公里半径内的个人资料,即 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);    
            }

【问题讨论】:

    标签: php laravel laravel-4 laravel-5


    【解决方案1】:

    你不能在paginate之前调用get,事实上你只能调用其中一个。您应该使用数据库查询进行过滤或考虑创建Illuminate\Pagination\PaginatorIlluminate\Pagination\LengthAwarePaginator 的实例

    【讨论】:

    • 嗨哈维尔,谢谢你 - 已经尝试过,上面显示的代码但是它将所有结果发送到视图是我有可能知道我在哪里出错了。我认为这在于如何让新的分页进入视图。
    猜你喜欢
    • 2016-07-08
    • 2019-12-14
    • 1970-01-01
    • 2015-12-15
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    相关资源
    最近更新 更多