Миграции базы данных являются весьма полезны для любого проекта, особенно для проектов с несколькими разработчиками, позволяя иметь последнюю версию базы данных у всех разработчиков. В Laravel для этого достатчно выполнить одну команду в командной строке.
Для создания новой миграции понадобился интерфейс командной строки Laravel — «Artisan».
Открыли консоль командной строки из папки, где расположен файл artisan. В консоли ввели следующую команду:
php artisan make:migration create_categories
В папке database/migration создался новый файл 2016_10_25_111814_Catalog.php.
Класс миграции содержит два метода up() для внесения изменений в таблицу базы данных и down() для отмены действий метода up(). Например, если мы создаем таблицу в up(), то в down() ее нужно удалить.
Допишем действия up() и down()
class Catalog extends Migration { /** * Run the migrations. * * @return void */ public function up() { // Schema::create('catalog', function(Blueprint $t){ $t -> increments('id'); $t ->string('name'); $t ->text('body'); $t ->string('url'); $t ->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { shema::drop('catolog'); } }
Внутри функции мы можем использовать следующие методы для определения структуры таблицы:
increments() — добавить автоинкрементируемое поле — его будет иметь боольшая часть ваших таблиц
string() — создать поле VARCHAR — правда, «строка» куда более описательное имя, чем в стандарте SQL
integer() — добавить целочисленное поле
float() — поле с дробным числом (число с плавающей точкой)
boolean() — логическое («булево») поле — истина (true) или ложь (false)
date() — поле даты
timestamp() — поле «отпечатка времени», так называемый «Unix timestamp»
text() — текстовое поле без ограничения по длине
blob() — большой двоичный объект (BLOB)
Перед тем как на основе существующих миграций создали таблицы, создали таблицу migrations, в которой laravel хранит данные о самих миграциях:
php artisan migrate:install
После того как создали таблицу, выполнили саму миграцию:
php artisan migrate.
Дата | Выполнено, % |
---|---|
2019-03-12 11:54:41 | 10 |
2019-03-04 20:05:42 | 36 |
2019-03-12 08:54:41 | 100 |