Миграции базы данных являются весьма полезны для любого проекта, особенно для проектов с несколькими разработчиками, позволяя иметь последнюю версию базы данных у всех разработчиков. В Laravel для этого достатчно выполнить одну команду в командной строке.
Для создания новой миграции нам понадобится интерфейс командной строки Laravel — «Artisan».
Например, миграцию с именем Maintext можно создать либо с помощью команды make:migration
:
php artisan make:migration maintext
Тогда в папке database/migrations/ создается файл с именем миграции и датой создания. Только что созданная миграция будет всегда последней в списке.
Файл миграции выглядит так:
Class Maintext { /** * Внести изменения в базу данных. * * @return void */ public function up() { // } /** * Отменить изменения базы данных. * * @returnvoid */ public function down() { // } }
Класс миграции содрежит два метода: up()
и down()
. Метод up предназначе для создания таблицы базы данных, метод down - для уничтожения. Класс миграции предназначен для создания и управления структуры таблицы базы данных. Модель тоже связана с определенной таблицей. Тогда лучше одновременно создавать миграцию и модель. Для этих целей воспользуемся другой artisan-командой:
php artisan make:model Maintext -m
Где make:model
- создает модель, префикс -m
указывает на создание миграции связанной с этой моделью.
Рассмотрим метод up() миграции созданной с помощью команды make:model
public function up() { Schema::create('maintexts', function (Blueprint $table) { $table->bigIncrements('id'); $table->timestamps(); }); }
Обратите внимание на название таблицы maintexts
, которая будет создаваться по выполнению данной миграции. Модель Maintext автоматически будет связана с таблицей maintexts.
Внутри функции мы можем использовать следующие красивые методы для определения структуры таблицы:
increments() — добавить автоинкрементируемое поле — его будет иметь большая часть ваших таблиц;
string() — создать поле VARCHAR — правда, «строка» куда более описательное имя, чем в стандарте SQL;
integer() — добавить целочисленное поле;
float() — поле с дробным числом (число с плавающей точкой);
boolean() — логическое («булево») поле — истина (true) или ложь (false);
date() — поле даты;
timestamp() — поле «отпечатка времени», так называемый «Unix timestamp»;
text() — текстовое поле без ограничения по длине;
enum()->default() — текстовое поле с вариантами выбора и значением по-умолчанию;
blob() — большой двоичный объект (BLOB).
Внесем в метод up следующие изменения:
public function up() { Schema::create('maintexts', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->text('body'); $table->string('url'); $table->enum('lang', ['ru', en])->default('ru'); $table->timestamps(); }); }
Для создания таблицы с предопределенными полями, остается только выполнить миграцию с помощью artisan-команды migration
:
php artisan migrate