Такие вопросы по миграциям в Laravel:
Допустим, у меня есть 1 миграция (создание таблицы) - уже сделанная, то есть была набрана команда php artisan migrate
, a
затем я делаю другие изменения (например, изменение структуры другой таблицы), а потом набираю команду php artisan migrate
- обработаются все миграции, включая уже обработанную ранее первую, или Laravel использует в данной ситуации контроль версий (о котором пишется в документации) и обработает только последнюю (новую)?
В контексте первого вопроса, будет лучше делать для каждого действия/для действия с одной и той же таблицей отдельную миграцию или же редактировать ту же самую миграцию, увеличивая batch count?
down()
. Правильно ли я понимаю, что если ты в методе run()
создал, например, 2 таблицы, добавил колонку в 3-ей и изменил тип
данных для колонки в 4-ой, то в методе down()
надо вручную в
точности сделать всё наоборот, возвращая к состоянию до метода
run()
?Тут 2 варианта:
Eсли вы разрабатываете, здесь и сейчас, с нуля и поняли, что блин, а вот тут не хватает чего-то,- вы можете сделать php artisan migrate:refresh
т.е. сбросить и создать все таблицы
У вас команда или проект который уже в работе, и вам нужно добавить, что-то новое, тогда вы должны создать миграцию с двумя методами up
и down
, причем down
будет отменять все то что добавили в up
Этот вопрос закрывается в первом пункте, смотря, что и для чего вам надо.
Лучше конечно что б в одной миграции в 3 таблицы не создавали и каждая миграция имела свое название: например create_statuses_table
, add_field_status_to_orders_table
, соответственно если вы что-то добавили в up
то в down
это следует отменять.
Например:
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('shops', function (Blueprint $table) {
$table->json('suppliers_settings')->nullable()->after('suppliers');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('shops', function (Blueprint $table) {
$table->dropColumn('suppliers_settings');
});
}
Так же хорошо делать команду php artisan migrate --step
, что бы каждой миграции давался свой номер и потом можно было бы отменять по одной миграции назад при помощи команды php atisan migrate:rollback
Так же перед тем как выкатить на сервер изменение было бы не плохо проверять что у вас обе команды работают верно up()
и down()
, т.е. запустите разок php artisan migrate --step
и php atisan migrate:rollback
, что б удостовериться, что все идет без ошибок!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ЗдравствуйтеПодскажите что надо и откуда можно скачать программа для программирования на языке C++