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

Я совершенно не знаком с этим типом структуры. Я пришел из баребон 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'); } } 

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

Выполнить миграцию для создания таблицы

Чтобы создать миграцию, вы можете использовать команду make: migration в интерфейсе командной строки 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 и откат миграции.

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

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

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

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

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

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