Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в веб-разработке является создание CRUD-приложения (Create, Read, Update, Delete). В этой статье мы шаг за шагом проведем вас через процесс создания CRUD-приложения Laravel.
Сначала нам нужно создать новый проект 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=
В 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 в нашей базе данных.
Далее нам нужно создать контроллер для обработки операций 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.
Далее нам нужно создать представления для нашего приложения. Мы можем создать новый каталог с названием items в каталоге resources/views и создать следующие файлы:
Откройте файл 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>
Этот код отображает форму для редактирования существующего элемента с полями для названия и описания, предварительно заполненными существующими значениями.
Наконец, нам нужно обновить маршруты, чтобы они указывали на методы контроллера, которые мы только что создали. Откройте файл routes/web.php и добавьте следующий код:
Route::resource('items', 'ItemController');
Этот код создает ресурсоемкие маршруты для нашей модели элементов, которые связаны с методами нашего ItemController.
Теперь, когда мы выполнили все шаги, мы можем протестировать наше приложение, выполнив следующую команду в терминале:
php artisan serve
Это запустит сервер разработки по адресу http://localhost:8000.
Откройте браузер и перейдите на страницу http://localhost:8000/items, чтобы увидеть список элементов. Нажмите на кнопку Создать элемент, чтобы создать новый элемент. Нажмите на кнопку Редактировать рядом с элементом, чтобы отредактировать его. Нажмите на кнопку Удалить, чтобы удалить элемент.
Поздравляем! Вы только что создали CRUD-приложение Laravel. Теперь вы можете использовать его в качестве отправной точки для создания более сложных приложений.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.