2016-11-22 73 views
0

此代碼給了我一個分頁結果集,附加信息 - 記錄總數,每頁記錄數,下一頁網址等。我想要所有這些。但我也想通過ID鍵入主要結果集,而不是僅僅獲取數值數組。查詢生成器 - 如何鏈接分頁和keyBy?

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

這可能嗎?我嘗試鏈接keyBy('id')最終,導致一個鍵控對象,但沒有任何分頁信息。

回答

1

確實因id鍵入此獲得集合:

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

如果要更新由分頁程序本身使用的(因此所有分頁信息仍是可訪問的)收集做到這一點算賬:

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

真棒- 謝謝!儘管如此,我實際上不知道我應該怎麼知道這一點。我無法在文檔中的任何位置看到getCollection()方法。 – daninthemix

+0

我通常使用'dd($ laptops)'來查看班級名稱'Paginator',然後打開相應的文件'vendor/laravel/framework/src/Illuminate/Pagination/Paginator.php'並探索隱藏的東西,通常是挖掘通過它擴展的類,在這種情況下'vendor/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php'。 – Paul

+0

不好意思把這個備份起來,但上面的兩條語句似乎與結果的順序混亂。因此,如果我的查詢生成器中有一個sortBy()子句,則使用上面的getCollection和setCollection方法會破壞排序順序。你有什麼想法如何解決這個問題? – daninthemix