Задать вопрос
Все статьи / VDS / Управление услугой VDS / Миграции в Laravel: что это и как с ними работать
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Миграции в Laravel: что это и как с ними работать

Миграции в 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

Пример вывода команды может быть следующим:

NAME      STATE           VERSION
* Ubuntu    Stopped         2

Важно! Чтобы узнать версию 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() предназначен для отката этих изменений.

Пример базового шаблона миграции:

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
    /**
     * Запуск миграции
     *
     * @return void
     */
    public function up()
    {
        //
    }
    /**
     * Откат миграции
     *
     * @return void
     */
    public function down()
    {
        //
    }
};

Допустим, вам нужно создать таблицу products с полями для хранения информации о товарах:

  • id – первичный ключ,
  • title – название товара,
  • price – цена,
  • quantity – количество на складе.

Код миграции для создания таблицы products может выглядеть так:

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
    /**
     * Запуск миграции
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->integer('quantity');
            $table->decimal('price', 8, 2);
        });
    }
    /**
     * Откат миграции
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
};

Здесь метод Schema::create создает новую таблицу, а Schema::dropIfExists удаляет ее при откате миграции. 

Сохраните изменения в файле, а затем выполните миграцию в терминале:

./vendor/bin/sail artisan migrate

Если миграция выполнится успешно, терминал покажет такой результат:

Migrating: 2023_07_15_142301_create_products_table
Migrated:  2023_07_15_142301_create_products_table (472.89ms)

Теперь в базе данных будет доступна таблица products, готовая к использованию для хранения данных о товарах.

Откат миграций

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

  • migrate:rollback откатывает последнюю выполненную команду migrate, то есть возвращает базу данных к состоянию перед последним запуском миграций. Чтобы откатить несколько миграций, используйте параметр --step, указав необходимое количество шагов. Например, введите --step=2, чтобы откатить последние два запуска миграций.
  • migrate:reset отменяет все миграции, возвращая базу данных к изначальному состоянию, в котором нет ни одной миграции. Эта команда полезна, если нужно полностью перезапустить все миграции с самого начала.
  • migrate:refresh сначала откатывает все миграции, а затем сразу запускает их заново. Подходит, если нужно проверить все миграции с самого начала, но без полного удаления таблиц, как в случае с  предыдущей командой. 
  • migrate:fresh удаляет все таблицы из базы данных, а затем выполняет команду migrate заново. Это приводит к полному восстановлению структуры базы данных, как будто она создается с нуля. Используйте ее, когда требуется полностью перезаписать базу данных.

Вывод

Миграции в Laravel – это удобный инструмент для управления структурой базы данных. Они позволяют разработчикам автоматически создавать и изменять таблицы, отслеживать изменения и откатывать их, обеспечивая полный контроль над версионированием базы данных. 

Мы рассмотрели основные команды и примеры работы с миграциями, что поможет вам без лишних трудностей адаптировать базу данных под нужды приложения. 

Предыдущая статья
Масштабирование Django
Следующая статья
Мониторинг