调用未定义的方法appends()

时间:2018-02-01 14:02:27

标签: php database laravel-5 laravel-5.4 laravel-5.5

我为db表创建了一个过滤器,但过滤只适用于第一页

我在控制器中尝试此代码

    public function index(Request $request)
{
    $user=User::orderBy('created_at', 'ASC');
    if($request->get('search'))
    {
        if ($request->get('type')) {
            $user->where('type', $request->get('type'));
        }
        if ($request->get('id')) {
            $user->where('id', (integer)$request->get('id'));
        }
        if ($request->get('first_name')) {
            $user->where('first_name', $request->get('first_name'));
        }
        if ($request->get('email')) {
            $user->where('email', $request->get('email'));
        }
    }


    $users = $user->paginate(20);
    $user->appends(['search' => $request->get('search')]);
    return view('admin.user.index', compact('users'));
}

但是我收到了这个错误

Call to undefined method Illuminate\Database\Query\Builder::appends()

如何解决此错误或如何使过滤器适用于所有页面?

1 个答案:

答案 0 :(得分:0)

如我所见,您已经使用了以下行并在用户中对用户数据进行了分页

$users = $user->paginate(20);

因此,您需要使用用户变量而不是用户

$users->appends(['search' => $request->get('search')]);