Как разбить таблицу на страницы с функцией поиска в реальном времени?

#php #laravel

#php #laravel

Вопрос:

Итак, у меня есть таблица с функцией поиска в реальном времени. Он отображает все данные, если нет ввода, но для целей пользовательского интерфейса мне нужна paginate() таблица. Это функция, которую я использую для поиска в реальном времени:

 function action(Request $request)
{
    if ($request->ajax()) {
        $output = '';
        $query = $request->get('query');
        if ($query != '') {
            $data = DB::table('students')
                ->where('student_id', 'like', '%'.$query.'%')
                ->orderBy('student_id', 'desc')
                ->get();         
        } else {
            $data = DB::table('students')
                ->orderBy('student_id', 'desc')
                ->get();
        }
        $total_row = $data->count();
        if ($total_row > 0) {
            foreach ($data as $row) {
                $output .= '
                    <tr>
                        <td>'. --- .'</td>
                        <td>'. --- .'</td>
                    </tr>
                ';
            }
        }
        $data = array(
            'table_data'  => $output,
            'total_data'  => $total_row
        );
        echo json_encode($data);
    }
}
 

Этот фрагмент кода, приведенный выше function , отображает все данные, когда в строке поиска нет ввода:

         else {
            $data = DB::table('students')
                ->orderBy('student_id', 'desc')
                ->get();
        }
 

Я попытался добавить ->paginate() до и после orderBy() и get() , но я получаю ошибку. Единственный способ, который я мог бы использовать ->paginate() , — это без orderBy() и get() , например, так: $data = DB::table('students')->paginate() , но я хочу использовать orderBy() .
Если вы знаете, как, пожалуйста, помогите.

Комментарии:

1. Это или ->paginate() или ->get() , не уверен, почему ->orderBy() не сработает

2. С какой ошибкой вы orderBy('student_id','desc')->paginate(10); сталкиваетесь?

3. Я использовал ->paginate() , и это сработало. спасибо, что указали на это @brombeer

Ответ №1:

привет, друг, пожалуйста, используйте модель, чтобы получить OrderBy и разбить на страницы

 $data = User::orderBy('student_id', 'desc')->paginate(15); //15 default grid size
 

Комментарии:

1. Бьюсь об заклад, это сработало бы, если бы я использовал модель, но я извлекал данные непосредственно из базы DB данных спасибо за ваш ответ