Такие вопросы по миграциям в 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, что б удостовериться, что все идет без ошибок!
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости