Поиск paginate laravel результат - PullRequest
0 голосов
/ 06 октября 2019
public function cari_user_status(Request $request)
{       
    $users = User::orderBy('created_at', 'DESC')->paginate(10);

    if ( ! empty($request->nama))
    {
        $users = $users->where('name', $request->nama)->paginate();
    }

    return view('users.index',  compact('users'));        
}

У меня есть функция поиска в контроллере, но она не работает.

Метод Illuminate \ Database \ Eloquent \ Collection :: paginate не существует.

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

Причина ошибки, потому что вы применяете фильтр к разбивке по страницам, т.е.

$users = User::orderBy('created_at', 'DESC')->paginate(10);
if ( ! empty($request->nama))
{
    // Problem is here $users is a collection of paginated result
    $users = $users->where('name', $request->nama)->paginate();
}

Попробуйте вот так.

public function cari_user_status(Request $request)
{       
    $users = (new User())->query(); 

    if ( ! empty($request->nama))
    {
        $users->where('name', $request->nama);
    }

    $users = $users->orderBy('created_at', 'DESC')->paginate(10);

    return view('users.index',  compact('users'));        
}
0 голосов
/ 06 октября 2019

Попробуйте:

$users = User::latest()
    ->when( ! empty($request->get('name')), function ($query) use ($request) {
        return $query->whereRaw("UPPER(name) LIKE '%" . strtoupper($request->get('name')) . "%'");
    })
    ->paginate(10);

return view('users.index', [
    'users' => $users,
]);

Также у вас есть опечатка в вашем "$ request-> nama"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...