2016-12-13 9 views
3

私の問題:私はlaravelを使って開発しようとしている単純なapiでページネーションを使う必要があります。私はCursorsを使っていました。しかし、私のモデルが結果を返していても結果は空です。laravel apiでページ分割を使用するには?

マイコード:

$newCursor = $groups->last()->id; 
$cursor = new Cursor($cursor, $previousCursor, $newCursor, $groups->count()); 

//dd($cursor); 

$groups = new Collection(fractal($groups, new GroupRequestTransformer('filtered'))); 
$groups->setCursor($cursor); 

$data = [ 
    'groups' => $groups, 
    'cursor' => $cursor 
]; 

$this->setResponseStatus(true, 200, trans('group.filtered')); 
return $this->sendResponseData($data); 

注:$groupsはモデルから返された値を持っています。そして、私dd($cursor);場合、私は

Cursor {#403 
    #current: "5" 
    #prev: null 
    #next: 13 
    #count: 1 
} 

を取得するので、これはと罰金です。しかし、私が$dataとして送信している実際の応答は空白です。

"data": { 
    "groups": {}, 
    "cursor": {} 
    } 

私はここで何が欠けていますか?

+0

ネイティブLaravelページネーションを使用できませんか? – Hammerbot

+0

apiで動作しますか?どうすれば '次のページ'のリンクを送信できますか? –

+0

はい、それは自動的にコントローラからあなたのEloquentモデルを返そうとすると、必要なすべてのデータをjson応答を生成します。 'return User :: paginate(10);' – Hammerbot

答えて

1

使用フラクタルのページネータインスタンスがページ分割コレクションに以下のカーソルを使用する必要をフォーマットしないように

use League\Fractal\Resource\Collection; 
use League\Fractal\Pagination\IlluminatePaginatorAdapter; 
use Acme\Model\Book; 
use Acme\Transformer\BookTransformer; 

$paginator = Book::paginate(); 
$books = $paginator->getCollection(); 

$resource = new Collection($books, new BookTransformer); 
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); 

はここを参照してください自分のサイト上の例でhttp://fractal.thephpleague.com/pagination/

またはlaravel-フラクタルサポートしている便利なパッケージを使用しますすべての種類のページングとすべてのために。 https://github.com/spatie/laravel-fractal

+0

"大量のデータセットを持っていて、' SELECT COUNT(*)FROM whatever'は実際にはオプションではありません。 " - それで私はカーソルを使ってみたかったのです。 –

+0

私はspatie laravel-fractalを使用することをお勧めします。私は20 lakh以上の行を扱っており、問題は発生しません。ページネーションは正しく動作します。 –

+0

さて、私はドキュメントを通過するだろう。ありがとう –

関連する問題