Главная/Статьи/Laravel 8: CRUD с минимальным количеством кода
Laravel

Laravel 8: CRUD с минимальным количеством кода

Рассмотрим создание простого 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')
Заметки + Создать
@foreach($notes as $note) @endforeach
ID Заголовок Действия
{{ $note->id }} {{ $note->title }} Просмотр Редактировать Удалить
@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, именами и контроллерами.