代码之家  ›  专栏  ›  技术社区  ›  AlmoDev

分页在laravel中以不同的方式产生

  •  0
  • AlmoDev  · 技术社区  · 4 年前

    我见过两种分页方式,我想知道它们之间的区别。或者如果有一个严格的方法来使用它们中的任何一个。请不要介意示例中使用的数据类型。

    第一个

     public function rules()
    {
        return [
            'query_value' => 'string',
            'status'      => ['string', Rule::in(BaseModel::STATUS_CODES)],
            'pagination'  => 'integer',
        ];
    }
    
    public function paginationResult()
    {
        return !is_null($this->get('pagination')) && $this->get('pagination') > 0 ? $this->get('pagination') : 10;
    }
    

    $this->itemsPerPage = $filterRequest->paginationResult();
    

    第二个

    $users = User::where('votes', '>', 100)->paginate(10);
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   Donkarnash    4 年前

    FormRequest类

    class UserRequest extends FormRequest
    {
        public function rules()
        {
            return [
                'query_value' => 'string',
                'status'      => ['string', Rule::in(BaseModel::STATUS_CODES)],
                'pagination'  => 'integer',
            ];
        }
    
        public function paginationValue()
        {
            return $this->pagination ?: 10;
        }
    }
    

    public function index(UserRequest $request)
    {
        $users = User::where('votes', '>', 100)->paginate($request->paginationValue());
    
        //...rest of method code
    }
    

    这个 paginate() 方法将返回 Illuminate\Pagination\LengthAwarePaginator 这意味着您可以显示如下链接 1 2 9 10 -数字显示分页结果的页码

    另一种分页方法是使用 simplePaginate() Illuminate\Pagination\Paginator ,这意味着您可以将链接显示为 Prev Next