Я совершенно новичок в этом типе фреймворка. Я пришел из-под разработки PHP-кода и не могу найти легкого для понимания руководства, что в действительности делают миграции.
Я пытаюсь создать проект, который уже имеет существующую базу данных. Я использовал это: https://github.com/Xethron/migrations-generator[1] но внесение изменений в схему с помощью миграций, похоже, выдает ошибки, что означает, что я понятия не имею, что я делаю.
Мне действительно нужно просто понять, что на самом деле делают миграции, как они влияют на базу данных и все, что, по вашему мнению, поможет абсолютному новичку.
Миграции — это тип контроля версий для вашей базы данных. Они позволяют команде изменять схему базы данных и оставаться в курсе текущего состояния схемы. Миграции обычно сопряжены с 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 вы можете услышать больше о миграциях.
Простое объяснение миграций:
Это система контроля версий для вашей схемы базы данных.
Представьте, что вы настраиваете новое приложение. Первое, что вы делаете, это создаете таблицу (назовите ее 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>
,
Представьте, что вы работаете над проектом с другими разработчиками. Поскольку разработчики добавляют все больше и больше функций, им также необходимо добавлять все больше и больше таблиц, столбцов, удалять столбцы, изменять типы данных столбцов и т. Д.
Это может очень быстро и легко выйти из-под контроля. Если вы пропустили какой-то SQL от одного разработчика, SQL другого разработчика может работать некорректно. Это также может стать огромной тратой времени, пытаясь разобраться в куче файлов sql, пытаясь выяснить, какие из них вы пропустили. Это всего лишь вопрос времени, пока все в команде разработчиков работают с разными базами данных или, не дай бог, кто-нибудь сломает производственную базу данных. С миграциями, вам просто нужно запустить php artisan migrate
в командной строке, и все изменения в базе данных будут заботиться о вас.
Именно поэтому миграции полезны. Я не буду вдаваться в основы их работы, потому что у Крайтена уже есть довольно хорошая рецензия.