方法 Illuminate\Support\Collection::offset 不存在
Method Illuminate\Support\Collection::offset does not exist
嗨,我正在尝试对我的视图进行分页,我的控制器中有以下用于分页的代码:
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.'%');
}
$users = $query->get();
$itemsPerPage = 8 ;
$currentPage = isset( $_GET['page'] ) && is_numeric( $_GET['page'] ) ? $_GET['page'] : 1;
$urlPattern = '/profilecontroller/membrevis?page=(:num)';
$totalItems = $users->count();
$donner = $users->offset( ( $currentPage - 1 ) * $itemsPerPage )->limit( $itemsPerPage )->get();
$paginator = new Paginator( $totalItems, $itemsPerPage, $currentPage, $urlPattern );
return view('membre2',['users'=> $donner,'paginator'=> $paginator]);
我的视图 membre2.blade.php 也有以下用于分页的代码:
<form>
....
</form>
<table>
@foreach($users as $row)
....
@endforeach
</table>
echo $paginator;
但我仍然遇到此错误方法Illuminate\Support\Collection::offset 不存在。 知道我已经通过 CMD 安装了 "jasongrimes/paginator:~1.0"
如有任何帮助,我们将不胜感激!
Illuminate\Support\Collection::offset 不存在。 这是因为你的 $users 是 [=20= 的实例]Illuminate\Support\Collection。要检查它,请在 $totalItems = $users->count(); 之后使用 dd(get_class($users));必须打印 Illuminate\Support\Collection。集合实例有计数方法,return 集合项计数。为了使您的 $users->offset( ( $currentPage - 1 ) * $itemsPerPage )->limit( $itemsPerPage )->get() 代码正常工作,您必须更改 $users 到 $query(maybe $users) 其中 $query(maybe $users) 是 \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(); 这是更优化的查询
嗨,我正在尝试对我的视图进行分页,我的控制器中有以下用于分页的代码:
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.'%');
}
$users = $query->get();
$itemsPerPage = 8 ;
$currentPage = isset( $_GET['page'] ) && is_numeric( $_GET['page'] ) ? $_GET['page'] : 1;
$urlPattern = '/profilecontroller/membrevis?page=(:num)';
$totalItems = $users->count();
$donner = $users->offset( ( $currentPage - 1 ) * $itemsPerPage )->limit( $itemsPerPage )->get();
$paginator = new Paginator( $totalItems, $itemsPerPage, $currentPage, $urlPattern );
return view('membre2',['users'=> $donner,'paginator'=> $paginator]);
我的视图 membre2.blade.php 也有以下用于分页的代码:
<form>
....
</form>
<table>
@foreach($users as $row)
....
@endforeach
</table>
echo $paginator;
但我仍然遇到此错误方法Illuminate\Support\Collection::offset 不存在。 知道我已经通过 CMD 安装了 "jasongrimes/paginator:~1.0"
如有任何帮助,我们将不胜感激!
Illuminate\Support\Collection::offset 不存在。 这是因为你的 $users 是 [=20= 的实例]Illuminate\Support\Collection。要检查它,请在 $totalItems = $users->count(); 之后使用 dd(get_class($users));必须打印 Illuminate\Support\Collection。集合实例有计数方法,return 集合项计数。为了使您的 $users->offset( ( $currentPage - 1 ) * $itemsPerPage )->limit( $itemsPerPage )->get() 代码正常工作,您必须更改 $users 到 $query(maybe $users) 其中 $query(maybe $users) 是 \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(); 这是更优化的查询