База данных Автовокзал(PHP,Laravel, Filament 3)

PHP
Нужно создать базу данных «Автовокзал» в используя фреймворк laravel, админку filament и mysql, заполнить ее данными и создать отчет по таблицам «Маршруты» и «Рейсы».

Постановка задачи:

Нужно создать базу данных «Автовокзал» в используя фреймворк laravel, админку filament и mysql, заполнить ее данными и создать отчет по таблицам «Маршруты» и «Рейсы».

Схема данных 

База данных Автовокзал(PHP,Laravel, Filament 3)

Миграции для создании таблиц в БД

Выполним команды в консоли:

image.png

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

Миграция для таблицы destinations (Пункты назначения)

Миграция для таблицы schedules (Дни движения)

Миграция для таблицы routes (Маршруты)

Миграция для таблицы stops (Остановки)

Миграция для таблицы buses (Автобусы)

Миграция для таблицы trips (Рейсы)

Модели для Laravel

Для реализации сущностей автовокзала в Laravel, можно создать следующие модели:

Destination (Пункт назначения)

Schedule (Дни движения)

Route (Маршрут)

Stop (Остановка)

Bus (Автобус)

Trip (Рейс)

Запускаем миграцию

image.png

База данных создана. Приступим к её наполнению. Создадим интерфейс для ввода информации

Установка Filament 3

Устанавливаем конструктор панелей Filament, выполнив следующие команды в каталоге вашего проекта Laravel:

Создайте пользователя

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

Откройте /admin в своем веб-браузере, войдите в систему и начните создавать свое приложение!

Генератор ресурсов

Выполним в консоли следующие команды, которые создадут нам ресурсы для редактирования наших моделей

После создания ресурсов так будет выглядеть наше меню

image.png

Отредактируем сгенерированные ресурсы

image.png

В ресурсах автобусов все поля сгенерировались автоматически, их менять не нужно

Поменяем только название, иконку и группу ресурса

image.png

В пунктах назначения все поля сгенерировались автоматически, меняем только название и иконку

image.png

В таблицах маршрутов заменим сгенерированные столбцы на:

  • TextColumn::make(‘departure.name’)
  • TextColumn::make(‘destination.name’)
  • TextColumn::make(‘schedule.days’)

В форме редактирования заменим сгенерированные поля на наши:

  • Пункт отправления выбирается из справочника:
  • Пункт назначения выбирается из справочника
  • Дни движения можно будет не только выбрать из бд, но и добавить новую и отредактировать
  • Ну и время в пути поменяем на поле выбора времени
image.png

app\Filament\Resources\RouteResource.php

image.png

В ресурсах остановки в таблицах меняем поля route_id с TextInput на  Select со связью relationship(name: 'route') и отображением сборного имении через функцию getOptionLabelFromRecordUsing()

В табличном виде заменяем имя маршрута на TextColumn::make(‘routeName’)

app\Filament\Resources\StopResource.php
image.png

В рейсах мы добавили вывод добавленного атрибута в моделях. На форме есть реактивное обновление полей дата прибытия меняется в зависимости от маршрута и времени выезда. Так же были изменены обычные textinput на select со связью с объектами

app\Filament\Resources\TripResource.php

Настройка Dashboard

Создадим числовой виджет

image.png

Командой создадим виджет статистики

в созданном файле добавим

Отчет Маршруты и Рейсы

Добавим кнопку выгрузить отчет в ресурс маршруты

image.png

Установим через composer библиотеку для формирования pdf отчетов — barryvdh / laravel-dompdf 

Создадим blade шаблон для нашего отчета

resources\views\tripreport.blade.php

Теперь можно добавить кнопку и действие для выгрузки отчета. В файле app\Filament\Resources\TripResource\Pages\ManageTrips.php добавим новый Action, который запросит все рейсы и передаст их в наш шаблон

После нажатия кнопки будет сохранен документ pdf и выйдет уведомление.

Вот пример отчета:

image.png

Заключение

Созданный проект позволяет вносить данные в базу данных и сохранять отчет в PDF. Это приложение было создано в ознакомительных целях, для изучения возможностей Laravel и Filament 3.

Добавить комментарий