Как работают миграции Laravel?

Я совершенно новичок в этом типе фреймворка. Я пришел из-под разработки PHP-кода и не могу найти легкого для понимания руководства, что в действительности делают миграции.

Я пытаюсь создать проект, который уже имеет существующую базу данных. Я использовал это: https://github.com/Xethron/migrations-generator[1] но внесение изменений в схему с помощью миграций, похоже, выдает ошибки, что означает, что я понятия не имею, что я делаю.

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

8

Решение

Миграции — это тип контроля версий для вашей базы данных. Они позволяют команде изменять схему базы данных и оставаться в курсе текущего состояния схемы. Миграции обычно сопряжены с Schema Builder легко управлять схемой вашего приложения.

С миграциями вам не нужно создавать таблицу в phpMyAdmin, вы можете сделать это в Laravel. Вот пример для создания пользовательской таблицы:

class CreateUsersTable extends Migration {

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id'); // autoincrement id field
$table->string('name');   // string field
$table->string('lastname');
$table->string('title');
$table->string('email')->unique();   // unique string field
$table->string('password', 60);      // string field with max 60 characters
$table->boolean('Status')->default(0); // string field with default value 0
$table->timestamps();

});
}


/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}

}

В этом коде мы создаем таблицу с полями типа «имя», «фамилия» … мы сказали, что в нашем коде Laravel они являются строковым типом, когда миграция завершена, у нас есть полная таблица данных с этими полями.

Запустите миграцию для создания таблицы

Чтобы создать миграцию, вы можете использовать команду make :igration Artisan CLI (интерфейс командной строки ремесленника):

php artisan make:migration create_users_table

или же

php artisan make:migration create_users_table --create=users

Запустите миграцию, чтобы изменить таблицу

Когда вам нужно внести некоторые изменения в пример таблицы базы данных: добавить голосование поля в таблицу пользователей, вы можете сделать это в коде Laravel, не касаясь кода SQL

php artisan make:migration add_votes_to_users_table --table=users

Откат последней операции миграции

Если вы допустили ошибку и сделали что-то не так, вы всегда можете откатиться, чтобы вернуть базу данных в прежнее состояние.

php artisan migrate:rollback

Откат всех миграций

php artisan migrate:reset

Откатить все миграции и запустить их снова

php artisan migrate:refresh

php artisan migrate:refresh --seed

Одним из лучших преимуществ миграций является создание базы данных без прикосновения к коду SQL. Вы можете создать всю базу данных со связями в коде PHP, а затем перенести ее в MySQL, PL / SQL, MSSQL или любую другую базу данных.

Также рекомендую бесплатный Laravel 5 фундаментальная серия, в эпизоде ​​7 вы можете услышать больше о миграциях.

12

Другие решения

Простое объяснение миграций:

Это система контроля версий для вашей схемы базы данных.

Представьте, что вы настраиваете новое приложение. Первое, что вы делаете, это создаете таблицу (назовите ее mytable) с парой столбцов. Это будет ваша первая миграция. Вы запускаете миграцию (php artisan migrate), когда вы начинаете работать над своим приложением и вуаля! У вас есть новая таблица в вашей базе данных.

Некоторое время спустя вы решаете, что вам нужен новый столбец в вашей таблице. Вы создаете миграцию (php artisan make:migration в Laravel 5) и новый файл миграции создан для вас. Вы обновляете код в этой миграции, запускаете php artisan migrate снова, и у вас есть новый столбец в вашей таблице.

Хорошо, это основная идея миграции. Но это еще не все …

Предположим, позже вы поймете, что запутались, когда создали последнюю миграцию. Вы уже запустили его, поэтому ваша база данных изменилась. Как это исправить? Хорошо, если вы правильно написали миграцию и реализовали down метод, вы можете просто сделать php artisan migrate:rollback и это откатит миграцию.

Как Laravel делает это? Отслеживая ваши миграции в специальной таблице базы данных. php artisan migrate:install Команда настроит все для вас, чтобы Laravel мог управлять этими миграциями.

Со временем, по мере роста вашего приложения, вы будете добавлять все больше и больше миграций. Laravel дает вам возможность шагать вперед и назад по мере миграции, чтобы убедиться, что ваша база данных находится в том состоянии, в котором она вам нужна, во время работы.

Проверьте список artisan команды с php artisan, Вы также можете запросить помощь по конкретной команде с php artisan help <command>,

2

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

Это может очень быстро и легко выйти из-под контроля. Если вы пропустили какой-то SQL от одного разработчика, SQL другого разработчика может работать некорректно. Это также может стать огромной тратой времени, пытаясь разобраться в куче файлов sql, пытаясь выяснить, какие из них вы пропустили. Это всего лишь вопрос времени, пока все в команде разработчиков работают с разными базами данных или, не дай бог, кто-нибудь сломает производственную базу данных. С миграциями, вам просто нужно запустить php artisan migrate в командной строке, и все изменения в базе данных будут заботиться о вас.

Именно поэтому миграции полезны. Я не буду вдаваться в основы их работы, потому что у Крайтена уже есть довольно хорошая рецензия.

1
По вопросам рекламы [email protected]