如何在Laravel5中使用原始sql分页?

时间:2015-04-30 12:55:34

标签: php laravel web pagination laravel-5

    $sql = "SELECT *,earth_distance(ll_to_earth(team.lat, team.lng), ll_to_earth(23.1215939329,113.3096030895)) AS distance FROM team where earth_box(ll_to_earth(23.1215939329,113.3096030895),1000) @> ll_to_earth(team.lat, team.lng); ";
    $result = DB::select( \DB::raw( $sql ) );

大家好。

这是我的控制器代码,我的问题是,如何使用Pagination添加到此代码中来构建我的restful api?

第二个问题,iOS或Android将发送"下一页"参数,如何使用它并找到下一节数据?

如果您知道如何使用它或使用任何开放资源,请告诉我,谢谢!

1 个答案:

答案 0 :(得分:0)

如果您尝试对可能正在处理计算的动态列进行分页以进行报告,则另一个选项是创建排序方法并传入数组和params:

public function sort($array_of_objects, $sort_by=null, $order, $page) 
{
    $collection = collect($array_of_objects);
    if ($sort_by)
    {

        if ($order=='desc') {
            $sorted = $collection->sortBy(function($role) use ($sort_by)
            {
                return $role->{$sort_by};
            })->reverse();
        } else if ($order=='asc') {
            $sorted = $collection->sortBy(function($role) use ($sort_by)
            {
                return $role->{$sort_by};
            });
        }
    } else {
        $sorted = $collection;
    }

    $num_per_page = 20;
    if (!$page) {
        $page = 1;
    }

    $offset = ( $page - 1) * $num_per_page;
    $sorted = $sorted->splice($offset, $num_per_page);

    return  new Paginator($sorted, count($array_of_objects), $num_per_page, $page);

}