У меня есть существующая таблица базы данных, и я хочу добавить к ней столбец. Однако, когда я запускаю команду php artisan migrate
, она ничего не говорит о миграции. Но я уже добавляю схему для добавления столбцов таблицы. Я прочитал несколько статей и ссылок, в которых я должен выполнить php artisan migrate:refresh
сначала php artisan migrate:refresh
до добавления новых столбцов. Проблема в том, что она удалит мои существующие данные в моей таблице. Могу ли я выполнить миграцию и успешно добавить столбцы в таблицу без удаления моих данных? Пожалуйста, помогите мне с этим. Большое спасибо. Вот мой код миграции.
public function up() { // Schema::create('purchase_orders', function(Blueprint $table){ $table->increments('id'); $table->string('po_code'); $table->text('purchase_orders'); $table->float('freight_charge'); $table->float('overall_total'); $table->timestamps(); }); Schema::table('purchase_orders', function(Blueprint $table){ $table->string('shipped_via'); $table->string('terms'); }); } /** * Reverse the migrations. * * @return void */ public function down() { // Schema::drop('purchase_orders'); }
Я хочу добавить столбец shipped_via
и terms
в моей таблице purchase_orders
.
Используйте команду ниже для изменения существующей таблицы
php artisan make:migration add_shipped_via_and_terms_colums_to_purchase_orders_table --table=purchase_orders
используйте --create
для создания новой таблицы и --table
для изменения существующей таблицы.
Теперь будет создан новый файл миграции. Внутри функции up()
в этом файле добавьте эту строку
Schema::table('purchase_orders', function(Blueprint $table){ $table->string('shipped_via'); $table->string('terms'); });
А затем запустите php artisan migrate
В вашей базе данных Laravel есть таблица, в которой он отслеживает все выполненные миграции. Поэтому, только изменив файл миграции, Laravel автоматически не перезапустит эту миграцию. Причина, по которой миграция уже выполняется Laravel.
Поэтому лучше всего просто создать новую миграцию и поместить в нее часть кода (вы были на правильном пути!).
public function up() { // Schema::table('purchase_orders', function(Blueprint $table){ $table->string('shipped_via'); $table->string('terms'); }); } /** * Reverse the migrations. * * @return void */ public function down() { // }
Вам не нужно заполнять случай функции down, когда таблица будет удалена с помощью текущей миграции purchase_orders.
Чтобы выполнить миграцию только что выполненной миграции:
php artisan migrate