Рассмотрим создание простого CRUD на Laravel 8 на примере заметок. Используем встроенные инструменты фреймворка для минимизации количества кода.
1. Роутинг в одну строку
Вместо того чтобы объявлять 7 отдельных маршрутов для каждой сущности, используйте resource-роут:
use App\Http\Controllers\NotesController;
Route::resource('notes', 'NotesController');
Одна строка автоматически генерирует все необходимые маршруты: index, create, store, show, edit, update, destroy.
2. Контроллер и модель одной командой
php artisan make:controller NotesController --resource --model=Note
Флаг --resource создаёт методы CRUD, флаг --model генерирует модель одновременно.
3. Миграция базы данных
php artisan make:migration create_notes_table --create=notes
Структура таблицы в файле миграции:
Schema::create('notes', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->timestamps();
});
php artisan migrate --path=/database/migrations/create_notes_table
4. Метод index в контроллере
public function index()
{
$notes = Note::orderBy('id', 'desc')->paginate(10);
return view('note.index')->with('notes', $notes);
}
5. Представление index.blade.php
@extends('layouts.app')
@section('content')
Заметки + Создать
ID
Заголовок
Действия
@foreach($notes as $note)
{{ $note->id }}
{{ $note->title }}
Просмотр
Редактировать
Удалить
@endforeach
@endsection
6. Валидация
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required',
'body' => 'required'
]);
// Логика сохранения...
}
Вывод ошибок в шаблоне:
@if($errors->any())
@foreach($errors->all() as $error)
- {{ $error }}
@endforeach
@endif
Проверка маршрутов
php artisan route:list
Команда выведет таблицу со всеми созданными маршрутами, их методами HTTP, URI, именами и контроллерами.