Как построить CRUD-приложение в Laravel

RedDeveloper
03.05.2023 11:45
Как построить CRUD-приложение в Laravel

Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в веб-разработке является создание CRUD-приложения (Create, Read, Update, Delete). В этой статье мы шаг за шагом проведем вас через процесс создания CRUD-приложения Laravel.

Шаг 1: Настройка проекта

Сначала нам нужно создать новый проект Laravel. Мы можем сделать это, выполнив следующую команду в терминале:

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

Это создаст новый проект Laravel в каталоге под названием my-project.

Далее нам нужно создать базу данных для нашего приложения. Мы можем сделать это, зайдя в командную строку MySQL и выполнив следующую команду:

CREATE DATABASE my_database;

После создания базы данных нам необходимо настроить наш проект Laravel для ее использования. Мы можем сделать это, обновив файл .env в корневом каталоге нашего проекта. Замените значения DB_DATABASE, DB_USERNAME и DB_PASSWORD на данные вашей базы данных:

DB_DATABASE=my_database
DB_USERNAME=root
DB_PASSWORD=

Шаг 2: Создание модели и миграция

В Laravel модели используются для взаимодействия с базой данных. Мы можем создать новую модель с помощью следующей команды:

php artisan make:model Item -m

Это создаст новую модель под названием Item, а также создаст для нее файл миграции. Опция -m указывает Laravel на создание файла миграции.

Далее нам нужно определить схему для нашей таблицы items в файле миграции. Откройте файл миграции, созданный командой выше, и обновите функцию up:

public function up()
{
    Schema::create('items', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description')->nullable();
        $table->timestamps();
    });
}

Эта миграция создаст таблицу items со следующими столбцами: id, name, description и timestamps.

После определения схемы мы можем запустить миграцию с помощью следующей команды:

php artisan migrate

Это создаст таблицу items в нашей базе данных.

Шаг 3: Создание контроллера

Далее нам нужно создать контроллер для обработки операций CRUD для нашей модели элементов. Мы можем создать новый контроллер с помощью следующей команды:

php artisan make:controller ItemController --resource

Это создаст новый контроллер под названием ItemController с опцией --resource, который будет генерировать методы CRUD для нас.

Откройте файл ItemController и обновите функцию index:

public function index()
{
    $items = Item::all();

    return view('items.index', compact('items'));
}

Эта функция извлекает все элементы из базы данных и передает их в представление под названием items.index.

Шаг 4: Создание представлений

Далее нам нужно создать представления для нашего приложения. Мы можем создать новый каталог с названием items в каталоге resources/views и создать следующие файлы:

  • index.blade.php: Отображает список всех элементов.
  • create.blade.php: Отображает форму для создания нового элемента.
  • edit.blade.php: Отображает форму для редактирования существующего элемента.

Откройте файл index.blade.php и обновите его, чтобы отобразить список всех элементов:

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Description</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>
        @foreach($items as $item)
        <tr>
            <td>{{ $item->name }}</td>
            <td>{{ $item->description }}</td>
            <td>
                <a href="{{ route('items.edit', $item->id) }}">Edit</a>
                <form action="{{ route('items.destroy', $item->id) }}" method="POST">
                    @csrf
                    @method('DELETE')
                    <button type="submit">Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </tbody>
</table>

Этот код отображает таблицу со всеми элементами и предоставляет ссылки для их редактирования и удаления.

Откройте файл create.blade.php и обновите его, чтобы отобразить форму для создания нового элемента:

<form action="{{ route('items.store') }}" method="POST">
    @csrf
    <div>
        <label for="name">Name</label>
        <input type="text" name="name" id="name">
    </div>
    <div>
        <label for="description">Description</label>
        <textarea name="description" id="description"></textarea>
    </div>
    <button type="submit">Create Item</button>
</form>

Этот код отображает форму для создания нового элемента с полями для названия и описания.

Откройте файл edit.blade.php и обновите его, чтобы отобразить форму для редактирования существующего элемента:

<form action="{{ route('items.update', $item->id) }}" method="POST">
    @csrf
    @method('PUT')
    <div>
        <label for="name">Name</label>
        <input type="text" name="name" id="name" value="{{ $item->name }}">
    </div>
    <div>
        <label for="description">Description</label>
        <textarea name="description" id="description">{{ $item->description }}</textarea>
    </div>
    <button type="submit">Update Item</button>
</form>

Этот код отображает форму для редактирования существующего элемента с полями для названия и описания, предварительно заполненными существующими значениями.

Шаг 5: Обновление маршрутов

Наконец, нам нужно обновить маршруты, чтобы они указывали на методы контроллера, которые мы только что создали. Откройте файл routes/web.php и добавьте следующий код:

Route::resource('items', 'ItemController');

Этот код создает ресурсоемкие маршруты для нашей модели элементов, которые связаны с методами нашего ItemController.

Шаг 6: Тестирование приложения

Теперь, когда мы выполнили все шаги, мы можем протестировать наше приложение, выполнив следующую команду в терминале:

php artisan serve

Это запустит сервер разработки по адресу http://localhost:8000.

Откройте браузер и перейдите на страницу http://localhost:8000/items, чтобы увидеть список элементов. Нажмите на кнопку Создать элемент, чтобы создать новый элемент. Нажмите на кнопку Редактировать рядом с элементом, чтобы отредактировать его. Нажмите на кнопку Удалить, чтобы удалить элемент.

Поздравляем! Вы только что создали CRUD-приложение Laravel. Теперь вы можете использовать его в качестве отправной точки для создания более сложных приложений.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.