Laravel — это веб-фреймворк на основе PHP, который уже заложил основу для веб-разработчиков, позволяющих создавать веб-приложения, не беспокоясь о мелочах. Laravel предоставляет архитектуру MVC (модель-представление-контроллер), с помощью которой вы можете быстро создавать приложения CRUD.
Каждые шесть месяцев основная группа разработчиков выпускает более новую и улучшенную версию Laravel; это Laravel 8. В этом посте вы узнаете, как быстро создать приложение на Laravel 8. Если вы новичок в Laravel, эта статья поможет вам создать, вставить, обновить и удалить модель из базы данных.
- Laravel 8 CRUD Tutorial
- Шаг 1. Установка Laravel 8
- Шаг 2. Настройте базу данных MySQL
- Шаг 3: Создайте модель и настраиваемую миграцию
- Шаг 4. Создайте контроллер Laravel 8.
- Шаг 5: Определите маршруты
- Шаг 6. Настройте Bootstrap в Laravel 8
- Шаг 7. Создайте представления в Laravel 8
- Шаг 8. Добавьте правила проверки и сохраните данные.
- Шаг 9: Отображение игр
- Шаг 10: Завершите редактирование и обновление
- Шаг 11: Создание функции удаления
Laravel 8 CRUD Tutorial
Чтобы создать приложение CRUD в Laravel 8, ваш компьютер должен иметь версию PHP> = 7.3 и композитор со следующими дополнительными расширениями.
- Расширение BCMath PHP
- Расширение Ctype PHP
- Расширение OpenSSL PHP
- Расширение PDO PHP
- Расширение PHP Tokenizer
- Расширение XML PHP
- Расширение Fileinfo PHP
- Расширение JSON PHP
- Расширение PHP Mbstring
Шаг 1. Установка Laravel 8
Если вы используете Laravel Valet, тогда вам нужно обновить свой Valet в вашей системе, чтобы создать последний проект laravel. Вы можете найти больше в руководстве по обновлению Laravel Valet.
Вы также можете установить Laravel 8, используя следующую команду.
composer create-project laravel/laravel --prefer-dist laravel8crud
Я буду использовать код Visual Studio в качестве редактора для этого проекта.
Шаг 2. Настройте базу данных MySQL
Мы будем использовать База данных MySQL для создания базы данных и возврата к проекту.
Laravel предоставляет файл .env для добавления учетных данных. Откройте файл и отредактируйте следующий код.
DB_CONNECTION = mysqlDB_HOST = 127.0.0.1DB_PORT = 3306DB_DATABASE = laravel8crudDB_USERNAME = rootDB_PASSWORD = root
Имя пользователя и пароль будут другими. для вашего на основе учетных данных вашей базы данных.
Laravel поставляется с некоторыми миграциями по умолчанию, такими как users , password_resets и create_failed_jobs . Теперь перейдите в терминал и введите следующую команду, чтобы запустить миграцию.
php artisan migrate
Вы можете увидеть в своей базе данных, что эти таблицы созданы, а те таблицы пусты.
Шаг 3: Создайте модель и настраиваемую миграцию
Мы создадим проект вокруг игр для Playstation 5. Таким образом, пользователи могут создавать игры для PS5, редактировать и удалять игры. Итак, давайте создадим модель игры и выполним миграцию.
php artisan make: model Game -m
Будет создано два файла.
- Модель Game.php
- миграция create_games_table
Добавьте новые поля внутри create_games_table.php файл миграции.
//create_games_table.phppublic function up () {Schema :: create ('games', function (Blueprint $ table) {$ table-> id (); $ table-> string (' name '); $ table-> integer (' price '); $ table-> timestamps ();});}
Поля id и timestamp создаются Laravel по умолчанию. Имя и цена — это наши настраиваемые поля, которые пользователь может добавить через веб-формы. Вы можете запустить миграцию, чтобы создать таблицу в базе данных.
php artisan migrate
Шаг 4. Создайте контроллер Laravel 8.
Маршрутизация ресурсов Laravel назначает типичные маршруты « CRUD » на контроллер с помощью одной строки кода. Поскольку наше приложение представляет собой базовые операции, мы будем использовать контроллер ресурсов для этого небольшого проекта.
php artisan make: controller GameController --resource
При новой установке Laravel 8 не применяется префикс пространства имен к вашим группам маршрутов, в которые загружаются ваши маршруты.
В предыдущих выпусках Laravel
RouteServiceProvider
содержал свойство$. Значение этого свойства будет автоматически добавлено к определениям маршрута контроллера и вызовам метода
. Это означает, что Laravel не будет выполнять автоматические префиксы пространств имен ». Документы Laravel 8.x — Примечания к выпускуaction
helper/URL :: action
. В Laravel 8.x это свойство по умолчанию равно null
Здесь вы можете открыть файл App Providers RouteServiceProvider.php и изменить следующие код внутри метода boot ().
//RouterServiceProvider.phpRoute :: middleware ('web') -> namespace ('App Http Controllers') -> group (base_path ('routes /web.php'));
Вот и все. Теперь он может найти контроллер. Если ваши файлы контроллера находятся в другом месте, вам необходимо указать путь в пространстве имен.
Обратите внимание, что я добавил флаг –resource , который будет определять шесть методов внутри GameController, а именно:
- Index: (метод index () используется для отображения списка игр).
- Create: (метод create () покажет форму или представление для создания игры).
- Store: (метод store () используется для создания игры внутри базы данных. Примечание: метод create отправляет данные формы в метод store ()).
- Show: (метод show () отобразит указанную игру).
- Edit: (метод edit () покажет форма для редактирования игры. Форма будет заполнена данными существующей игры).
- Update: (метод update () используется для обновления игры внутри базу данных. Примечание: метод edit () отправляет данные формы в update (), ход).
- Destroy: (метод destroy () используется для удаления указанной игры).
По умолчанию файл GameController.php создается внутри папки app >> Http >> controllers .
php// GameController.phpnamespace App Http Controllers; использовать Illuminate Http Request; класс GameController extends Controller {/** * Отображение списка ресурса. * * @return Illuminate Http Response */public function index () {//}/** * Показать форму для создания нового ресурса. * * @return Illuminate Http Response */public function create () {//}/** * Сохранение вновь созданного ресурса в хранилище. * * @param Illuminate Http Request $ request * @return Illuminate Http Response */public function store (Request $ request) {//}/** * Отображение указанного ресурса. * * @param int $ id * @return Illuminate Http Response */public function show ($ id) {//}/** * Показать форму для редактирования указанного ресурса. * * @param int $ id * @return Illuminate Http Response */public function edit ($ id) {//}/** * Обновить указанный ресурс в хранилище. * * @param Illuminate Http Request $ request * @param int $ id * @return Illuminate Http Response */обновление публичной функции (Request $ request, $ id) {//}/** * Удалить указанный ресурс из хранилища. * * @param int $ id * @return Illuminate Http Response */public function destroy ($ id) {//}}
Вы можете видеть, что файл содержит операции CRUD в форма различных функций. Мы будем использовать эти функции, одну за другой, для создания грубых операций.
Флаг –resource вызовет внутренний метод resource () Laravel для генерации следующие маршруты. Вы можете проверить список маршрутов, используя следующую команду.
php artisan route: list
Шаг 5: Определите маршруты
Чтобы определить маршрут в Laravel, вам необходимо добавить код маршрута в файл routes >> web.php .
//web.phpRoute :: resource ('games', 'GameController');
Шаг 6. Настройте Bootstrap в Laravel 8
Laravel предоставляет скаффолдинг Bootstrap и Vue, который находится в пакете Composer laravel/ui , который можно установить с помощью Composer.
composer требует laravel/ui
После установки пакета laravel/ui вы можете установить леса внешнего интерфейса с помощью команды Artisan ui.
php artisan ui bootstrap
Теперь, пожалуйста, запустите « npm install && npm run dev », чтобы скомпилировать свежий скаффолдинг.
Шаг 7. Создайте представления в Laravel 8
Представления содержат HTML ser определяется вашим приложением и отделяет логику контроллера/приложения от логики представления.. Представления хранятся в каталоге resources/views .
Внутри каталога views нам также необходимо создать файл макета . Итак, мы создадим файл в каталоге views с именем layout.blade.php. Добавьте следующий код в файл layout.blade.php .
Учебное пособие по Laravel 8 CRUD @yield ('content')
Внутри ресурсов >> представлений создайте следующие файлы с тремя лезвиями.
- create.blade.php
- edit.blade.php
- index.blade.php
Внутри файл create.blade.php напишите следующий код.
@ extends ('layout') @section ('content') .uper {margin-top: 40px; }@endsectionДобавить данные игр@if ($ errors-> any ( ))@foreach ($ errors-> all () as $ error)
- {{$ error}}
@endforeach
@endif@csrf
В этом коде мы определили действие, которое будет вызывать метод store () метода GameController. . Помните, мы использовали контроллер ресурсов.
Теперь нам нужно вернуть это представление создания из метода create () GameController. Итак, напишите следующий код внутри метода create () GameController.
//GameController. phppublic function create () {return view ('create');}
Перейдите на https://laravel8crud.test/games/create или http://localhost: 8000, и вы увидите что-то вроде того, что показано ниже.
Шаг 8. Добавьте правила проверки и сохраните данные.
В на этом шаге мы добавим проверку формы Laravel. Теперь добавьте GameController.php , который импортирует пространство имен модели Game внутри GameController .php .
php//GameController.phpnamespace App Http Controllers; используйте Illuminate Http Request; используйте App Models Game;
Теперь напишите следующий код внутри функции store () файла GameController.php .
//GameController.phppublic хранилище функций (Request $ request) {$ validatedData = $ request-> validate (['name' => 'required | max: 255', 'price' => ' обязательный', ]); $ show = Game :: create ($ validatedData); return redirect ('/games') -> with ('success', 'Игра успешно сохранена');}
Мы используем $ request-> validate () метод проверки, который получает массив правил проверки.
Правила проверки [] — это ассоциативный массив. Ключ будет содержать field_name , а value — это правила проверки. Второй параметр — это необязательный массив для настраиваемых сообщений проверки. Правила разделяются вертикальной чертой «| ». В этом примере мы используем самые основные правила проверки.
Если проверка не удалась, она будет перенаправлена обратно на страницу формы с сообщениями об ошибках. Если проверка пройдет успешно, она создаст новую игру и сохранит ее в базе данных.
В случае ошибок нам нужно просмотреть эти сообщения об ошибках внутри create .blade.php , который мы уже сделали.
Если вы оставите все поля формы пустыми, вы увидите сообщение об ошибке, подобное этому изображению.
Как мы видим, мы получили ошибки, но если мы заполним все правильные данные, вы все равно не получите иметь возможность сохранять данные в базе данных из-за исключения массового назначения.
Чтобы предотвратить исключение массового назначения , нам нужно добавить массив $ fillable внутри Game .php .
php//Game.phpnamespace App Models; используйте Illuminate Database Eloquent Factories HasFactory; используйте класс Illuminate Database Eloquent Model; Игра расширяет модель {use HasFactory; protected $ fillable = ['name', 'price'];}
Теперь, если вы заполните правильные поля формы, он создаст новую строку в базе данных.
Шаг 9: Отображение игр
Чтобы отобразить список игр, нам нужно написать HTML-код внутри файл index.blade.php . Но перед этим давайте напишем функцию index () файла GameController.php для получения массива данных из базы данных.
//GameController.phppublic функция index () {$ games = Game :: all (); return view ('index', compact ('games'));}
Теперь напишите следующий код внутри файла index.blade.php .
@ extends ('layout') @ section ('content') .uper {margin-top: 40px; }@if (session () -> get ('success')){{session () -> get ('success ')}}
@endif
@foreach ($ games as $ game) ID Название игры Цена игры Действие @endforeach {{$ game -> id}} {{$ game-> name}} {{$ game-> price}} Изменить @csrf @method (' DELETE ') @endsectionМы добавили две кнопки с именем edit и delete для выполнения соответствующих операций.
Шаг 10: Завершите редактирование и обновление
Чтобы иметь возможность редактировать данные, нам нужны данные из базы данных. Добавьте следующий код в функцию редактирования файла GameController.php .
//GameController.phppublic function edit ($ id) {$ game = Game :: findOrFail ($ id); return view ('edit', compact ('game'));}Теперь создайте новый файл в папке представлений под названием edit.blade.php и добавьте следующий код.
@extends ('layout') @ section ('content') .uper {margin-top: 40px; }@endsectionРедактировать данные игры@if ($ errors-> any ( ))@foreach ($ errors-> all () as $ error)
- {{$ error}}
@endforeach
@endif@csrf @method (' PATCH ')Теперь перейдите на страницу индекса и затем перейдите на страницу редактирования определенной игры, и вы увидите форму с заполненными значениями.
Теперь добавьте следующий код внутри GameController update () function.
//Обновление функции GameController.phppublic (Request $ request, $ id) {$ validatedData = $ request-> validate (['name' => 'required | max: 255' , 'price' => 'required']); Game :: whereId ($ id) -> update ($ validatedData); return redirect ('/games') -> with ('success', 'Данные игры успешно обновлены ');}N Теперь вы можете обновить все данные в базе данных.
Шаг 11: Создание функции удаления
Удаление данных из базы данных , мы будем использовать функцию GameController destroy () .
//GameController.phppublic функция destroy ($ id) {$ game = Game :: findOrFail ($ id ); $ game-> delete (); return redirect ('/games') -> with ('success', 'Данные игры успешно удалены');}Функция delete () предоставляется Laravel для удаления данных из База данных.
Вот полный файл контроллера.
Php//GameController.phpnamespace App Http Controllers; используйте Illuminate Http Request; используйте приложение Models Game; class GameController extends Controller {/** * Отображение списка ресурса. * * @return Illuminate Http Response */public function index () {$ games = Game :: all (); возвратный вид ('индекс', компактный ('игры')); }/** * Показать форму для создания нового ресурса. * * @return Illuminate Http Response */public function create () {return view ('create'); }/** * Сохранение вновь созданного ресурса в хранилище. * * @param Illuminate Http Request $ request * @return Illuminate Http Response */публичное хранилище функций (Request $ request) {$ validatedData = $ request-> validate (['name' => 'required | max: 255 ',' price '=>' обязательно ',]); $ show = Game :: create ($ validatedData); return redirect ('/games') -> with ('success', 'Игра успешно сохранена'); }/** * Показать указанный ресурс. * * @param int $ id * @return Illuminate Http Response */public function show ($ id) {//}/** * Показать форму для редактирования указанного ресурса. * * @param int $ id * @return Illuminate Http Response */public function edit ($ id) {$ game = Game :: findOrFail ($ id); return view ('редактировать', компактный ('игра')); }/** * Обновить указанный ресурс в хранилище. * * @param Illuminate Http Request $ request * @param int $ id * @return Illuminate Http Response */обновление публичной функции (Request $ request, $ id) {$ validatedData = $ request-> validate ( ['name' => 'обязательно | max: 255', 'price' => 'required']); Game :: whereId ($ id) -> update ($ validatedData); return redirect ('/games') -> with ('success', 'Данные игры успешно обновлены'); }/** * Удалить указанный ресурс из хранилища. * * @param int $ id * @return Illuminate Http Response */public function destroy ($ id) {$ game = Game :: findOrFail ($ id); $ game-> delete (); return redirect ('/games') -> with ('success', 'Игровые данные успешно удалены'); }}Вот и все. Теперь вы можете создавать, читать, обновлять и удалять данные в Laravel.
Если вас интересует среда FrontEnd Javascript, такая как Vue с Laravel или Angular с Laravel, ознакомьтесь с руководствами, такими как Vue Пример Laravel CRUD и пример учебного пособия по Laravel.
Я поместил весь код операции crud на Github, чтобы вы тоже могли его проверить.
КОД GITHUB