Миграции в Laravel – это важный инструментом для управления базой данных, особенно при работе над проектами, требующими частого внесения изменений в структуру данных. Он позволяет автоматически создавать, изменять и удалять таблицы и колонки в базе данных, что делает процесс разработки удобнее и управляемее.
Рассмотрим, как использовать миграции в Laravel и какие возможности они предоставляют.
Что такое Laravel
Laravel («Ларавел» или «Ларавель») – это популярный PHP-фреймворк, который используется для разработки веб-приложений. Основное преимущество Laravel – его упрощенный и выразительный синтаксис, который позволяет создавать мощные приложения с меньшими усилиями. Фреймворк придерживается архитектуры MVC (Model-View-Controller), что помогает организовать код и логически разделять компоненты приложения.
Laravel предоставляет широкий набор встроенных функций и инструментов, включая:
- миграции для работы с базой данных,
- систему маршрутизации,
- средства для аутентификации и авторизации пользователей,
- шаблонизатор Blade для построения динамических интерфейсов,
- встроенные системы тестирования.
Один из ключевых компонентов – Eloquent ORM, который позволяет работать с базой данных, используя объектно-ориентированный подход, что делает взаимодействие с данными интуитивно понятным и лаконичным.
Еще одна особенность Laravel – его мощная экосистема, в которую входят дополнительные пакеты и инструменты, например, Laravel Passport для создания API, Laravel Horizon для мониторинга очередей, и Laravel Dusk для тестирования пользовательских интерфейсов. Благодаря этому разработчики могут быстро интегрировать в проект функции безопасности, очередей, отправки уведомлений и другие востребованные возможности.
Фреймворк также поддерживает удобную интеграцию с внешними сервисами, обеспечивает гибкость в работе с REST API и предлагает множество возможностей для масштабирования приложений.
Как установить Laravel
В этом руководстве мы установим Laravel на Windows 10 с помощью Docker, который обеспечивает удобный запуск приложений в изолированных контейнерах. Сначала настроим подсистему Windows для Linux (WSL), затем установим Docker и, наконец, Laravel.
В этом разделе подробно описаны шаги именно для Windows 10; для других операционных систем можно обратиться к официальной документации Laravel.
Шаг 1. Установка WSL
WSL позволяет запускать приложения Linux в операционной системе Windows, обеспечивая совместимость и удобство работы. Если ваша версия Windows 10 – 2004 и выше, то для быстрой установки достаточно выполнить следующую команду в PowerShell с правами администратора:
wsl --install
По умолчанию в WSL будет установлен дистрибутив Ubuntu. Чтобы использовать WSL 2, зададим нужную версию. Этот процесс займет несколько минут:
wsl --set-version Ubuntu 2
Проверить текущую версию можно с помощью команды:
wsl.exe -l -v
Пример вывода команды может быть следующим:
Важно! Чтобы узнать версию Windows, нажмите Win+R и введите winver. Если версия ниже 2004, команда wsl --install не сработает. В этом случае следуйте инструкции ниже (поддерживается версия 1903 с номером сборки 18362 и выше):
Откройте PowerShell от имени администратора и выполните команду, чтобы включить WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Включите функцию виртуальной машины. Для этого в PowerShell пропишите:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Затем необходимо перезагрузить компьютер для завершения установки.
Перейдите по ссылке и скачайте пакет обновления ядра для Linux, а затем установите его.
После перезагрузки снова откройте PowerShell от имени администратора и выполните команду:
wsl --set-default-version 2
Теперь вы можете выбрать и установить нужный дистрибутив Linux через Microsoft Store. После установки доступ к консоли выбранной операционной системы будет осуществляться через меню поиска в Windows.
Шаг 2. Установка и настройка Docker
Чтобы установить Docker Desktop, зайдите на сайт Docker, нажмите Download Docker Desktop и скачайте версию для Windows.
В процессе установки поставьте галочку у Use WSL 2 instead of HYPER-V, чтобы активировать использование WSL 2.
После завершения установки откройте Docker и нажмите на значок настроек («шестеренка») в верхнем меню.
Во вкладке General выберите нужные параметры, например, включите поддержку WSL2, и отключите опции, которые не нужны.
После этого перейдите на вкладку Resources и включите интеграцию с Ubuntu, поставив соответствующую галочку. Нажмите Apply & Restart, чтобы Docker перезагрузился и применил новые настройки.
Шаг 3. Начните работу с Lavarel
Для создания нового приложения Laravel откройте терминал Ubuntu и введите следующую команду:
curl -s https://laravel.build/example-app | bash
Где example-app – это папка, в которой будет находиться ваш новый проект Laravel. При первом запуске команда автоматически загрузит необходимые образы, если они еще не установлены.
После завершения загрузки Laravel Sail станет доступен для использования. Перейдите в созданный каталог проекта:
cd example-app
Теперь запустим контейнеры Laravel Sail командой:
./vendor/bin/sail up
Процесс создания контейнеров может занять некоторое время, но последующие запуски будут значительно быстрее. После успешного запуска Sail, веб-приложение Laravel будет доступно по адресу localhost.
Если у вас возникла ошибка типа «The stream or file '/var/www/html/storage/logs/laravel.log' could not be opened in append mode: Failed to open stream: Permission denied», измените права на файл docker.sock с помощью команды:
sudo chmod 666 /var/run/docker.sock
Как работать с миграциями
Миграции – это файлы на языке PHP, которые описывают изменения в структуре базы данных. Laravel позволяет описывать таблицы и их столбцы с помощью PHP-кода, что позволяет легко управлять версионированием и изменениями структуры БД в процессе разработки.
Миграции позволяют:
- легко разворачивать структуру базы данных для нового окружения или коллеги;
- безопасно и последовательно изменять структуру БД без риска потери данных;
- управлять изменениями в БД в формате контроля версий, синхронизируя их с изменениями в коде.
В Laravel миграции проекта сохраняются в каталоге ./database/migrations/. По умолчанию в новом приложении, развернутом с помощью Laravel Sail, уже присутствует несколько миграций, которые необходимы для базовой структуры базы данных.
Чтобы запустить миграции, откройте терминал Ubuntu и выполните следующие команды:
./vendor/bin/sail up -d
./vendor/bin/sail artisan migrate
Где первая – это запуск приложения в фоновом режиме.
Миграции выполняются в порядке их создания, что гарантирует последовательное применение изменений в базе данных. Благодаря этому Laravel поддерживает механизм откатов, позволяющий легко вернуться к предыдущему состоянию базы данных в случае необходимости. Запуск миграций по отдельности или в неправильном порядке может привести к потерям данных, поэтому для работы с миграциями важно следовать рекомендуемому процессу.
Создание миграций
Чтобы создать миграцию в Laravel, сначала сгенерируйте соответствующий класс, используя команду make:migration в терминале Ubuntu. Выполните команду:
./vendor/bin/sail artisan make:migration create_products_table
После выполнения появится сообщение о создании файла миграции:
Created Migration: 2023_07_15_142301_create_products_table
Название миграции включает временную метку и указанный вами заголовок, что помогает Laravel выполнять миграции в нужной последовательности. Откройте созданный файл в текстовом редакторе, чтобы приступить к редактированию.
Шаблон миграции содержит два метода: up() и down(). В методе up() описываются изменения, которые будут применены к базе данных при запуске миграции, а метод down() предназначен для отката этих изменений.
Пример базового шаблона миграции:
Допустим, вам нужно создать таблицу products с полями для хранения информации о товарах:
- id – первичный ключ,
- title – название товара,
- price – цена,
- quantity – количество на складе.
Код миграции для создания таблицы products может выглядеть так:
Здесь метод Schema::create создает новую таблицу, а Schema::dropIfExists удаляет ее при откате миграции.
Сохраните изменения в файле, а затем выполните миграцию в терминале:
./vendor/bin/sail artisan migrate
Если миграция выполнится успешно, терминал покажет такой результат:
Теперь в базе данных будет доступна таблица products, готовая к использованию для хранения данных о товарах.
Откат миграций
В Laravel есть несколько команд для отката миграций, каждая из которых позволяет управлять базой данных по-своему. Они помогают вернуться к предыдущему состоянию базы данных, что особенно полезно при тестировании и разработке:
- migrate:rollback откатывает последнюю выполненную команду migrate, то есть возвращает базу данных к состоянию перед последним запуском миграций. Чтобы откатить несколько миграций, используйте параметр --step, указав необходимое количество шагов. Например, введите --step=2, чтобы откатить последние два запуска миграций.
- migrate:reset отменяет все миграции, возвращая базу данных к изначальному состоянию, в котором нет ни одной миграции. Эта команда полезна, если нужно полностью перезапустить все миграции с самого начала.
- migrate:refresh сначала откатывает все миграции, а затем сразу запускает их заново. Подходит, если нужно проверить все миграции с самого начала, но без полного удаления таблиц, как в случае с предыдущей командой.
- migrate:fresh удаляет все таблицы из базы данных, а затем выполняет команду migrate заново. Это приводит к полному восстановлению структуры базы данных, как будто она создается с нуля. Используйте ее, когда требуется полностью перезаписать базу данных.
Вывод
Миграции в Laravel – это удобный инструмент для управления структурой базы данных. Они позволяют разработчикам автоматически создавать и изменять таблицы, отслеживать изменения и откатывать их, обеспечивая полный контроль над версионированием базы данных.
Мы рассмотрели основные команды и примеры работы с миграциями, что поможет вам без лишних трудностей адаптировать базу данных под нужды приложения.