CRUD-приложение — это то, чем тебя кормят в каждом туториале по Laravel. Скучно, банально, но без этого никуда. И если честно, CRUD — это 80% твоей будущей работы. Всё остальное — редкие вспышки гениальности на фоне бесконечного копипаста.

Создание CRUD на Laravel — это как учиться кататься на велосипеде с доп. колёсами. Всё вроде понятно: модель, миграция, контроллер, вьюхи. Но пока ты реально не соберёшь руками — будешь оставаться в мире теории.

А потом удивляешься, что весь твой проект по сути один большой CRUD: одни пишут посты, другие меняют заказы, третьи редактируют профили. Всё одно и то же дерьмо — только названия таблиц разные.

Шаг 1. Новый проект

Да, без Composer ты никуда:

composer create-project --prefer-dist laravel/laravel laravel-crud

Никакой магии. Просто ещё один проект, который будет лежать у тебя на диске рядом с десятком таких же.

Шаг 2. Подключаем базу

В .env пишешь подключение к MySQL:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_crud
DB_USERNAME=root
DB_PASSWORD=

Создаёшь базу руками или через любимый phpMyAdmin. Если забыл — Laravel тебе сразу в морду кинет ошибку.

Шаг 3. Модель и миграция

Создаём модель Post и миграцию:

php artisan make:model Post -m

В миграции описываем таблицу:

Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('content');
    $table->timestamps();
});

Запускаем:

php artisan migrate

Теперь у тебя есть таблица. Банальщина, но без этого дальше никуда.

Шаг 4. Контроллер

php artisan make:controller PostController --resource

Laravel щедро накинет тебе методы для index, create, store, edit, update, destroy. Всё готово, только мясо внутрь добавь.

Шаг 5. Маршруты

В routes/web.php:

use App\Http\Controllers\PostController;

Route::resource('posts', PostController::class);

И вот у тебя REST-эндпоинты, которые Laravel разложил по полочкам.

Шаг 6. Вьюхи

Самая муторная часть. Папка resources/views/posts, внутри index.blade.php, create.blade.php, edit.blade.php.

Blade — штука норм, если не превращать его в помойку из @foreach внутри @if внутри ещё одного @foreach. Но так обычно и бывает.

Шаг 7. Логика в контроллере

Вот тут вся суть. В PostController пишешь:

public function store(Request $request)
{
    Post::create($request->all());
    return redirect()->route('posts.index');
}

Или чуть приличнее с валидацией:

$request->validate([
    'title' => 'required',
    'content' => 'required',
]);

Post::create($request->only('title', 'content'));

Остальные методы — то же самое, только на обновление и удаление.

Шаг 8. Проверка на живучесть

Запускаешь:

php artisan serve

И идёшь на http://127.0.0.1:8000/posts. Если всё не упало, значит, ты собрал свой первый скучный CRUD.

Заключение

CRUD — это не «учебный пример». Это реальность. В 9 из 10 проектов на Laravel у тебя будет бесконечный CRUD: добавь сущность, сделай форму, прикрути апдейт, прикрути удаление.

Красивые слова про «архитектуру» и «сервисные слои» появятся потом. А пока это просто:

  • создать модель,
  • написать контроллер,
  • нафигачить blade-шаблоны,
  • и запустить.

И всё. Добро пожаловать в реальную жизнь Laravel-разработчика.