#php #laravel-5.4 #pagination
#php #laravel-5.4 #разбивка на страницы
Вопрос:
Я новичок в Laravel, и у меня возникли проблемы с разбиением на страницы при использовании keyBy().
Работает следующее:
$customers = Customers::paginate(10)
Но следующее выдает ошибку: Вызов неопределенного метода IlluminateDatabaseQueryBuilder::keyBy()
$customers = Customers::keyBy('id')->paginate(10)
Итак, как мне разбивать страницы при использовании keyBy?
Я попытался вставить это в метод загрузки AppServiceProvider.php без какого- либо эффекта:
if (!Collection::hasMacro('paginate')) {
Collection::macro('paginate',
function ($perPage = 15, $page = null, $options = []) {
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
return (new LengthAwarePaginator(
$this->forPage($page, $perPage), $this->count(), $perPage, $page,$options))->withPath('');
});
}
Комментарии:
1.
keyBy()
это методCollection
, а неBuilder
. Замыкания, подобные->get()
или->all()
преобразующие aBuilder
в aCollection
, поэтому вам придется вызыватьCustomers::get()->keyBy(...)
… Но тогда вы не можете вызватьpaginate()
, так как это методBuilder
, а неCollection
. Возможно, вам потребуется переосмыслить то, что вы пытаетесь сделать, например, возможноgroupBy()
unique()
, выбор или.2. Привет, Тим. Спасибо за понимание. Будет продолжать расследование.