2016-11-22 3 views
0

このコードでは、ページごとのレコード、次のページのURLなどの追加情報を含むページ単位の結果セットを得ることができます。しかし、数値配列を取得するのではなく、IDで主結果セットをキーしたいと思う。クエリービルダー - ページとキーの連鎖方法

$laptops = Laptop::addJoins()->filterResults($request)->selectListCols()->paginate(50); 

これは可能ですか?私は最後にkeyBy('id')を連鎖しようとしましたが、結果としてキー付きオブジェクトが生成されましたが、改ページ情報はありませんでした。

答えて

1

idをキーコレクションを取得するために、これを行います。

$laptops->setCollection($laptopsCollection); 
+0

素晴らしい:あなたはページネータ自体によって使用されるコレクションを更新したい場合は

$laptopsCollection = $laptops->getCollection()->keyBy('id'); 

を(ので、すべてのページネーション情報がまだアクセス可能である)を行うその後のこと - ありがとう!私は文字通りどのように私はそれを知っているはずだったのか分かりません。ドキュメントのどこにでもgetCollection()メソッドが表示されません。 – daninthemix

+0

私は通常 'dag($ laptops)'クラス名 'Paginator'を見て、それぞれのファイル' vendor/laravel/framework/src/Illuminate/Pagination/Paginator.php'を開いて、この場合は 'vendor/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php'というクラスを拡張します。 – Paul

+0

これをバックアップして申し訳ありませんが、上記の2つのステートメントは結果の順序が乱れているようです。だから私は私のクエリビルダーでsortBy()句を持っている場合、上記のgetCollectionとsetCollectionメソッドを持つことは、ソート順序を破棄します。あなたはこれをどのように解決するか考えていますか? – daninthemix