Учебник Laravel (5.7) Пагинация
Шаг 1: Установите Laravel 5.7
Введите следующую команду.
композитор создание-проект Laravel / Laravel Lapagination --prefer-dist
Теперь настройте базу данных в файле .env.
Хорошо, затем перейдите к терминалу и нажмите следующую команду. php ремесленник мигрировать
Это создаст две таблицы в базе данных. Теперь мы используем фейкерную библиотеку для заполнения данных в базе данных.
Шаг 2: Генерация поддельных данных в базе данных.
Если вам интересно, как его установить, хорошая новость - он уже создан для вас в Laravel! Взгляните на composer.json по умолчанию в Laravel. "Требует-DEV":
"filp/whoops": "~2.0",
"nunomaduro/collision": "~1.1",
"fzaninotto/faker": "~1.4",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "~7.0",
"symfony/thanks": "^1.0"
},
Теперь нам просто нужно написать 6-7 строк кода для генерации ложных пользовательских данных. Перейдите в базу данных >> seed >> DatabaseSeeder и добавьте в нее следующие строки кода.
// DatabaseSeeder.php
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = Faker::create();
foreach (range(1,1000) as $index) {
DB::table('users')->insert([
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt('secret'),
]);
}
}
Сначала мы создали объект-фейкер, а затем перебираем различные столбцы таблицы пользователей и присваиваем по одному свойству за раз. Каждый цикл времени повторялся; новые случайные данные генерируются и прикрепляются к конкретным столбцам. Таким образом, мы можем создавать разные поддельные данные для каждого пользователя. Теперь введите следующую команду, чтобы создать поддельные данные. php artisan db: seed
Теперь вы можете видеть в базе данных и в таблице пользователей множество добавленных строк. Команда db: seed запускает этот файл с именем DatabaseSeeder.php.
Шаг 3: Вывести данные на внешний интерфейс.
Теперь перейдите к файлу HomeController.php и создайте одну функцию с именем getUsers ().
// HomeController.php
use App\User;
public function getUsers()
{
$users = User::all();
return view('index', compact('users'));
}
Определите маршрут внутри файла web.php.
// web.php
Route::get('/users', '[email protected]')->name('users');
Наконец, создайте один файл внутри ресурсов >> в папке views с именем index.blade.php.
<<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Users Data</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ asset('css/app.css') }}" rel="stylesheet" />
</head>
<body>
<div class="container">
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</body>
</html>
Прямо сейчас он отображает все строки, и это то, что мы хотим. Мы хотим разбить данные на страницы. Итак, давайте сделаем это.
Шаг 4: Разбиение красноречивых результатов
Нам нужно использовать функцию Paginate, предоставляемую моделью Eloquent. Поэтому замените метод all () на paginate () и передайте количество строк в качестве параметра.
// HomeController.php
$users = User::paginate(15);
Теперь нам нужно отобразить веб-компонент нумерации страниц во внешнем интерфейсе. Как мы говорили ранее, объект разбиения на страницы Laravel хорошо работает с Bootstrap CSS Framework. Итак, нам просто нужно добавить следующий код в компонент таблицы внутри файла index.blade.php.
{{ $users->links() }}</code></pre>
<p>So, our whole index.blade.php file looks like this.</p>
<pre class="line-numbers">
<code class="language-php"><<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Users Data</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ asset('css/app.css') }}" rel="stylesheet" />
</head>
<body>
<div class="container">
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach
</tbody>
</table>
{{ $users->links() }}
</div>
</body>
</html>
Преобразование результатов пагинации в JSON
Классы результатов Paginator в Laravel реализуют контракт IlluminateContractsSupportJsonableInterface и предоставляют метод toJson, поэтому преобразование результатов разбивки на страницы в JSON легко. Поэтому напишите следующий код в файле web.php.
Route::get('users', function () {
return App\User::paginate(4);
});
Предыдущий: Учебник Laravel (5.7) Миграция
Далее: Учебник Laravel (5.7) Redis
Новый контент: Composer: менеджер зависимостей для PHP , R программирования