laravel pagination:在数组上调用成员函数render()

时间:2016-02-12 15:29:28

标签: php laravel pagination

The Following error occurs:

在laravel控制器中,我有以下代码:

public function getAdmins(){
    //$users = $this->user->all();

    $search[] =array();
    $search['name']= Input::get('name','');
    $search['uname']= Input::get('uname','');
    $search['role']= Input::get('role','');

    $users = $this->user->findUsers($search);

    $exceptSuperadmin = array();
    foreach($users as $user){
        if(!$user->isUser())
            $staffs[] = $user;
    }
    $users = @$staffs;

    return view('users::admins.list')->with('staffs',$users)->with('search',$search);
}

在模型中我有:

public function findUsers($search)
{

    return self::where('name','like','%'.$search['name'].'%')
    ->where('username','like','%'.$search['uname'].'%')
    ->where('role','like','%'.$search['role'].'%')
    ->paginate(5);

}

在刀片文件中我有:

@if($staffs)

@foreach($staffs as $staff)
        <!-- Some code here to loop array -->
     @endforeach

@else
      No Staffs

@endif 

{!! $staffs->render() !!} Error comes at this line

我不打算为什么会出现这个错误....... staffs是一个数组,render()是一个回显分页页面的函数......但是无法得到错误......任何人都可以帮忙。

2 个答案:

答案 0 :(得分:0)

不,render()不能在对象本身上工作,也不会在您创建的数组上用于分页工作所需的对象(LengthAwarePaginator)

由于您有一个集合,并且需要一个集合,因此可以使用提供的方法之一进行过滤,例如filter

像(未经测试但应该工作)的东西:

$staff = $users->filter(function ($value, $key) {
    return !$value->isUser();
});

答案 1 :(得分:0)

通过应用foreach寻呼机对象并分配一个数组会丢失分页属性,因此您将拥有一个数组而不是一个寻呼机对象。 我推荐以下解决方案:

控制器:

public function getAdmins(){

    $search[] =array();
    $search['name']= Input::get('name','');
    $search['uname']= Input::get('uname','');
    $search['role']= Input::get('role','');

    $users = $this->user->findUsers($search);

    return view('users::admins.list')->with('users',$users)->with('search',$search);
}

刀片文件:

@if($users)

    @foreach($users as $user)
         @if(!$user->isUser())
            <!-- Some code here to loop array -->
         @endif
    @endforeach

@else
      No Staffs

@endif 
{!! $users->render() !!}