Подсветка \ Поддержка \ Коллекция :: смещение не существует. это потому, что ваши $ пользователи являются экземплярами Подсветка \ Поддержка \ Коллекция .Для проверки используйте dd (get_class ($ users)); после $ totalItems = $ users-> count (); Должно быть напечатано Illuminate \ Support \ Collection .Экземпляр коллекции имеет метод count, который возвращает Количество элементов коллекции .Для вашего $ users-> offset (($ currentPage - 1) * $ itemsPerPage) -> limit ($ itemsPerPage) -> get () код работает правильно, вы должны изменить $ пользователей на $запрос (может быть $ users) , где $ запрос (может быть $ users) isntance \ Illuminate \ Database \ Query \ Builder .
В этом случае используйте
$query->->offset( ( $currentPage - 1 ) * $itemsPerPage )->limit( $itemsPerPage )->get();
Ваш исправленный код -
public function membrevis()
{
$filter = isset($_GET['filter']) ? $_GET['filter'] : null;
$query = DB::table('users')
->join('user_role', 'users.id', '=', 'user_role.user_id')
->join('roles', 'user_role.role_id', '=', 'roles.id')
->where('users.valid','=',0)
->select('users.*','roles.description');
if ($filter != null) {
$query->where('users.name','like','%'.$filter.'%')
->orWhere('roles.description','like','%'.$filter.'%');
}
$itemsPerPage = 8 ;
$currentPage = isset( $_GET['page'] ) && is_numeric( $_GET['page'] ) ? $_GET['page'] : 1;
$urlPattern = '/profilecontroller/membrevis?page=(:num)';
$totalItems = $query->count();
$donner = $query->offset( ( $currentPage - 1 ) * $itemsPerPage )->limit( $itemsPerPage )->get();
$paginator = new Paginator( $totalItems, $itemsPerPage, $currentPage, $urlPattern );
return view('membre2',['users'=> $donner,'paginator'=> $paginator]);
}
Я удаляю метод $ users = $ query-> get (), который является еще одним запросом в БД.А для получения общего количества пользователей вы использовали $ totalItems = $ query-> count (); , что является более оптимизированным запросом