2016-10-10 8 views
0
$posts = Post::all()->filter(function($item) use (&$pYear){ 
    return Persian::jDate(...) == $pYear; 
})->sortByDesc('id')->paginate(5); 

後にページ付け、どのように私は結果をページ分割することができ、ありがとうございました、助けてください。Laravel 5.3チェーン、私はページ付けチェーンにすると(5)、私はこのエラー「メソッドのpaginateが存在しません。」を得るフィルタ

+0

ビューにページ分割を統合しましたか? –

+0

@DiegoCespedes、{!! $ posts-> links()!!}? – Amigo

答えて

0

を削除してください。最後に、私は私のコレクションのカスタムページネータを作成することによって、それを解決し、たぶんこれは、私が短い解決策を見つけることができませんでした最善の方法ではありませんが、とにかく私のコードは正常に動作します。

use Illuminate\Pagination\LengthAwarePaginator; 

protected $perPage = 5; 

$posts = Post::get()->filter(function($item) use (&$pYear){ 
    return Persian::jDate(...) == $pYear; 
})->sortByDesc('id'); 

//this code simulates: ->paginate(5) 
$posts = new LengthAwarePaginator(
     $posts->slice((LengthAwarePaginator::resolveCurrentPage() * 
     $this->perPage)-$this->perPage, 
     $this->perPage)->all(), count($posts), 
     $this->perPage, null, ['path' => '']); 
  
0

all()

$posts = Post::filter(function($item) use (&$pYear){ 
    return Persian::jDate('Y', strtotime($item->created_at),'','Asia/Tehran','en') == $pYear; 
})->sortByDesc('id')->paginate(5); 
+0

定義されていないメソッドを呼び出す\ Database \ Query \ Builder :: filter() – Amigo

+0

'filter>の代わりに' - > where'クロージャを使うとよいでしょう。 –

+0

これに似たコードが必要ですが、これは動作しません! '$ posts = Post :: where(Persian :: jDate( 'Y'、strtotime( 'created_at') '、' Asia/Tehran '、' en ')、$ pYear);' – Amigo

関連する問題