2016-03-20 11 views
0

Laravel 5.2で改ページしようとすると、次のエラーが発生します。ページ区切りが存在しません。Laravel 5.2

BadMethodCallException in Macroable.php行81:ページ区切りは が存在しません。

そしてコード:私は配列をソートされた後まで、ページ付けたくない

Illuminate\Contracts\Pagination\Paginator; 
... 
     $count = 0; 
     $gdprecords = Gdprecord::all(); 
     foreach($gdprecords as $gdprecord) { 
      $count++; 
      $Pa = $gdprecord->adultpopulation; 
      $Pc = $gdprecord->childpopulation; 
      $P = $Pa + $Pc; // total population 
      $T = ($gdprecord->gdpcapita * $P) * $gdpratio; // basic income for country 
      if($bi_ratio == 0) { 
       $gdprecord->bi_adult = round($T/$Pa, 2); 
      } else { 
       $gdprecord->bi_adult = round($T/($Pa + ($Pc/$bi_ratio)), 2); 
      } 
      $gdprecord->bi_adult_monthly = round($gdprecord->bi_adult/12, 2); 
      $gdprecord->bi_adult_daily = round($gdprecord->bi_adult/365, 2); 
      if($bi_ratio == 0) { 
       $gdprecord->bi_child = 0; 
      } else { 
       $gdprecord->bi_child = round($gdprecord->bi_adult/$bi_ratio, 2); 
      } 
      $gdprecord->bi_child_monthly = round($gdprecord->bi_child/12, 2); 
      $gdprecord->bi_child_daily = round($gdprecord->bi_child/365, 2);      
     } 
     $sorted_gdprecords = $gdprecords->sortByDesc('bi_adult')->paginate(25); 

。どのように私はこの作品を作るのですか?ここで

おかげで、フィリップ

+0

あなたの雄弁な質問を追加できますか? – wiesson

+0

@wiesson、それはポストにあります。 '$ gdprecords = Gdprecord :: all();' –

+0

退屈な答えは、ページング機能が動作しないので、ソート基準をクエリに追加する方法を理解する必要があるということですコレクションにそれはとにかくベストプラクティスですが、データが追加され、それに基づいてソートされると、おそらくテーブルのいくつかのフィールドにその情報を追加することができますか?それ以外の場合は、独自のページネーションを記述する必要があるように見えます。コレクションベースであるため、効率的ではありません。 –

答えて

0

は、私が見つけた解決策、他の誰かからの借入コードです:

public function paginate($items,$perPage) 
    { 
     $pageStart = \Request::get('page', 1); 
     // Start displaying items from this number; 
     $offSet = ($pageStart * $perPage) - $perPage; 

     // Get only the items you need using array_slice 
     $itemsForCurrentPage = array_slice($items, $offSet, $perPage, true); 

     return new LengthAwarePaginator($itemsForCurrentPage, count($items), $perPage,Paginator::resolveCurrentPage(), array('path' => Paginator::resolveCurrentPath())); 
    } 

と、このコードを追加します。あなたの助けのための

$gdprecords2 = $gdprecords->sortByDesc('bi_adult')->all(); 
    $perPage = 25; 
    $sorted_gdprecords = self::paginate($gdprecords2, $perPage); 

感謝。 -Philip

関連する問題