Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 方法\Support\Collection::offset不存在_Php_Laravel_Laravel 5_Laravel 4_Eloquent - Fatal编程技术网

Php 方法\Support\Collection::offset不存在

Php 方法\Support\Collection::offset不存在,php,laravel,laravel-5,laravel-4,eloquent,Php,Laravel,Laravel 5,Laravel 4,Eloquent,您好,我正在尝试对视图进行分页,我的控制器中有以下用于分页的代码: public function membrevis() { $filter = isset($_GET['filter']) ? $_GET['filter'] : null; $query = DB::table('users') ->join('user_role', 'users.id', '=', 'user_role.user_id')

您好,我正在尝试对视图进行分页,我的控制器中有以下用于分页的代码:

    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]);
My view membre2.blade.php还有以下用于分页的代码:

  <form>
 ....
  </form>
 <table>
@foreach($users as $row)
....
@endforeach
 </table>
echo $paginator;

....
@foreach($users作为$row)
....
@endforeach
echo$paginator;
但是我仍然得到这个错误方法illumb\Support\Collection::offset不存在。知道我已经通过CMD安装了“jasongrimes/paginator:~1.0”


任何帮助都将不胜感激

照明\Support\Collection::offset不存在。这是因为您的$users照明\Support\Collection的实例。对于检查,使用dd(get_class($users))$totalItems=$users->count()之后必须是打印照明\Support\Collection。集合实例具有count方法,该方法返回集合项计数。要使您的$users->offset(($currentPage-1)*$itemsPerPage)->limit($itemsPerPage)->get()代码正常工作,您必须将$users更改为$query(可能$users)其中$query(可能$users)\lightlight\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();哪个查询更优化

控制器中的
$users
查询是什么?完整显示您的代码。Laravel 4或Laravel 5,选择一个。在$donner code之前,什么是dd(get_class($user)),它被打印为Illumb\Support\Collection;可以将偏移值设置为0@MehdiAlipour我刚刚用我的控制器配置文件controller.phpSo的完整代码更新了我的帖子。你认为我的代码应该改为:*$donner=$query->get()->offset(($currentPage-1)*$itemsPerPage)->limit($itemsPerPage)->get();**??当您使用$query->get()时,它将返回illumb\Support\Collection类的实例。->get()方法必须在queryHi结束时使用,因为错误最终消失了!谢谢你,伙计!但仍然有一个问题是echo$paginator;在我的视图中调用不起作用,它在我的视图中按原样显示,并且不返回分页!你知道怎么解决这个问题吗?我没有使用Paginator类。在这种情况下,我帮不了你。看官方文件,它一定对你有帮助