Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Laravel: migrations, laravel

Какие операции доступны в миграциях?

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

Короткий ответ

Миграции базы данных — это код, который описывает изменения в структуре БД (схеме). С их помощью можно версионировать и безопасно применять изменения. Основные операции включают создание и удаление таблиц, добавление, изменение и удаление столбцов, создание и удаление индексов и внешних ключей, а также выполнение произвольных SQL-запросов. Каждая миграция имеет методы up (для применения изменений) и down (для их отката).

Длинный ответ

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

Основные операции в миграциях (на примере Laravel)

  1. Работа с таблицами

    • Создание таблицы: Schema::create('table_name', function (Blueprint $table) { ... });

    • Удаление таблицы: Schema::drop('table_name'); или Schema::dropIfExists('table_name');

    • Переименование таблицы: Schema::rename($from, $to);

  2. Работа со столбцами

    • Добавление столбца: $table->string('email');, $table->integer('user_id')->unsigned();

    • Изменение столбца: $table->string('name', 100)->change(); (требует установки пакета doctrine/dbal)

    • Переименование столбца: $table->renameColumn('from', 'to');

    • Удаление столбца: $table->dropColumn('column_name');

  3. Работа с индексами

    • Добавление индекса:

      • Первичный ключ: $table->primary('id');

      • Уникальный индекс: $table->unique('email');

      • Простой индекс: $table->index('state');

    • Удаление индекса: $table->dropPrimary('...');, $table->dropUnique('...');, $table->dropIndex('...');

  4. Работа с внешними ключами (Foreign Keys)

    • Создание: $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

    • Удаление: $table->dropForeign(['user_id']);

  5. Выполнение произвольного SQL

    • Для операций, которые не поддерживаются построителем схем, можно использовать прямой SQL: DB::statement('ALTER TABLE users ...');

Пример миграции

// В методе up()
public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id(); // Первичный ключ bigint, auto_increment
        $table->string('title');
        $table->text('content');
        $table->foreignId('user_id')->constrained()->onDelete('cascade'); // Внешний ключ
        $table->timestamps(); // Столбцы created_at и updated_at

        // Создание индекса для столбца title
        $table->index('title');
    });
}

// В методе down() описывается откат миграции
public function down()
{
    Schema::dropIfExists('posts');
}

Вывод:
Миграции предоставляют мощный и безопасный способ синхронизировать схему базы данных между средами разработки, тестирования и продакшена. Они позволяют описывать сложные изменения структуры БД кодом, который можно применить или откатить одной командой, что является краеугольным камнем современных практик CI/CD.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Laravel

    Laravel

Ключевые слова

#migrations

#laravel

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.