РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
343 of 1392 menu

Класс Migration

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

Структура класса Migration

Каждый класс миграции наследуется от базового класса Migration и должен содержать методы up и down. В методе up определяются изменения структуры таблиц, а в методе down описывается откат этих изменений.

Синтаксис

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreatePostsTable extends Migration { public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('posts'); } } ?>

Пример создания таблицы

Давайте создадим миграцию для таблицы 'articles' с различными типами полей:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateArticlesTable extends Migration { public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title', 200); $table->text('description'); $table->integer('views')->default(0); $table->boolean('is_published')->default(false); $table->foreignId('user_id')->constrained()->onDelete('cascade'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('articles'); } } ?>

Пример изменения таблицы

Миграции также позволяют изменять существующие таблицы. Давайте добавим поле 'category' в таблицу 'articles':

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class AddCategoryToArticlesTable extends Migration { public function up() { Schema::table('articles', function (Blueprint $table) { $table->string('category', 100)->nullable(); }); } public function down() { Schema::table('articles', function (Blueprint $table) { $table->dropColumn('category'); }); } } ?>

Пример удаления таблицы

Для удаления таблицы используется метод dropIfExists фасада Schema:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Support\Facades\Schema; class DropArticlesTable extends Migration { public function up() { Schema::dropIfExists('articles'); } public function down() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } } ?>

Пример с внешним ключом

Рассмотрим создание таблицы с внешним ключом и ограничениями:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateCommentsTable extends Migration { public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->text('comment'); $table->foreignId('article_id')->constrained('articles')->cascadeOnDelete(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->boolean('is_approved')->default(false); $table->timestamps(); }); } public function down() { Schema::dropIfExists('comments'); } } ?>

Смотрите также

  • метод up,
    который применяет изменения к базе данных
  • метод down,
    который откатывает изменения
  • класс Schema,
    предоставляющий методы для работы со схемой
  • класс Blueprint,
    используемый для определения структуры таблиц
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить