Миграции базы данных являются весьма полезны для любого проекта, особенно для проектов с несколькими разработчиками, позволяя иметь последнюю версию базы данных у всех разработчиков. В Laravel для этого достатчно выполнить одну команду в командной строке.
Для создания новой миграции нам понадобится интерфейс командной строки Laravel — «Artisan».
Итак, откроем консоль командной строки из папки, где расположен файл artisan. В консоли введем следующую команду:
php artisan make:migration create_categories
Консоль должна ответить нам следующей фразой:
“Great! New migration created!”
Если получили такой ответ, то перейдем в папку application/migrations. Там должен находится файл 2014_04_20_210359_create_users.php (к имени миграции artisan добавляет текущую дату). Откроем данный файл. Увидим следующее:
Class Create_Categories { /** * Внести изменения в базу данных. * @return void */ public function up() { // } public function down() { // } }
Класс миграции содержит два метода up() для внесения изменений в таблицу базы данных и down() для отмены действий метода up(). Например, если мы создаем таблицу в up(), то в down() ее нужно удалить.
Допишем действия up() и down()
public function up(){ Schema::create('categories', function ($table) { // auto incremental id (PK) $table->increments('id'); // varchar 32 $table->string('name', 32); // enum $table->enum('showhide', array('show','hide')); // created_at | updated_at DATETIME $table->timestamps(); }); } public function down(){ Schema::drop('categories'); }
Внутри функции мы можем использовать следующие красивые методы для определения структуры таблицы:
Перед тем как на основе существующих миграций создавать таблицы, давайте создадим таблицу migrations, в которой laravel будет хранить данные о самих миграциях:
// ВНИМАНИЕ!Данну команду необходимо выполнять, если у нас еще не создана таблица migrations php artisan migrate:install
В результате мы должны увидеть
“Migration table created successfully.”
Теперь, когда таблица создана, мы можем выполнить саму миграцию:
php artisan migrate
Чтобы удалить таблицу, можно выполнить команду rollback
php artisan migrate:rollback
Практика