$posts = Post::all()->filter(function($item) use (&$pYear){ return Persian::jDate(...) == $pYear; })->sortByDesc('id')->paginate(5);
Когда я цепляю paginate (5), я получаю эту ошибку «Метод paginate не существует». Как я могу разбивать свой результат, пожалуйста, помогите, спасибо.
Попробуйте удалить all()
$posts = Post::filter(function($item) use (&$pYear){ return Persian::jDate('Y', strtotime($item->created_at),'','Asia/Tehran','en') == $pYear; })->sortByDesc('id')->paginate(5);
Наконец, я решил это, создав пользовательскую страницу для моей коллекции. Может быть, это не самый лучший способ, я не мог найти более короткое решение, так или иначе, мой код теперь работает отлично.
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' => '']);