Добавление нового столбца в существующую таблицу в процессе миграции
Я действительно не могу понять, как добавить новый столбец в мою выходную таблицу в моей базе данных с помощью PHP laravel framework.
Я попытался отредактировать файл миграции для
public function up()
{
Schema::create('users', function($table){
$table->integer("paid");
});
}
и в терминале php artisan migrate:install и migrate
как добавить новые столбцы?
8 ответов:
чтобы создать миграцию, вы можете использовать команду migrate:make на CLI Artisan. Используйте определенное имя, чтобы избежать столкновения с существующими моделями
для Laravel 3:
php artisan migrate:make add_paid_to_usersдля Laravel 5+:
php artisan make:migration add_paid_to_usersзатем вам нужно использовать
Schema::table()метод (когда вы обращаетесь к существующей таблице, а не создаете новую). И вы можете добавить такой столбец:public function up() { Schema::table('users', function($table) { $table->integer('paid'); }); }и не забудьте добавить откат вариант:
public function down() { Schema::table('users', function($table) { $table->dropColumn('paid'); }); }затем вы можете запустить свои миграции:
php artisan migrateэто все хорошо описано в документации для обоих Laravel 3:
и для Laravel 4 / Laravel 5:
Edit:
использовать
$table->integer('paid')->after(whichever_column);чтобы добавить это поле после определенного столбца.
я добавлю к ответу mike3875 для будущих читателей, используя Laravel 5.1 и далее.
чтобы сделать все быстрее, вы можете использовать флаг "--table " следующим образом:
php artisan make:migration add_paid_to_users --table="users"Это добавить
upиdownсодержание метода автоматически:/** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { // }); }аналогично, вы можете использовать
--create["table_name"]опция при создании новых миграций, которые добавят больше шаблонных к вашим миграциям. Небольшая точка, но полезно при выполнении нагрузок из них!
Если вы используете Laravel 5, команда будет;
php artisan make:migration add_paid_to_usersвсе команды для создания вещей (контроллеры, модели, миграции и т. д.) были перемещены под
вы можете добавить новые столбцы в начальный
Schema::createспособ такой:Schema::create('users', function($table) { $table->integer("paied"); $table->string("title"); $table->text("description"); $table->timestamps(); });если вы уже создали таблицу, вы можете добавить дополнительные столбцы в эту таблицу, создав новую миграцию и используя
Schema::tableспособ:Schema::table('users', function($table) { $table->string("title"); $table->text("description"); $table->timestamps(); });документация довольно тщательно об этом, и не слишком изменилась с вариант 3 до вариант 4.
вы можете просто изменить ваш существующий файл миграции, например добавить столбец в таблицу, а затем в терминале наберите :
$ php artisan migrate:refresh
laravel 5.6
в случае, если вы хотите добавить новый столбец в качестве внешнего ключа к существующей таблице.
создайте новую миграцию, выполнив следующую команду: make: миграция
пример :
php artisan make:migration add_store_id_to_users_table --table=users
в папке database / migrations у вас есть новый файл миграции, что-то вроде :
2018_08_08_093431_add_store_id_to_users_table.php (см. комментарии)
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddStoreIdToUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { // 1. Create new column // You probably want to make the new column nullable $table->integer('store_id')->unsigned()->nullable()->after('password'); // 2. Create foreign key constraints $table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { // 1. Drop foreign key constraints $table->dropForeign(['store_id']); // 2. Drop the column $table->dropColumn('store_id'); }); } }
после этого выполните команду:
php artisan migrate
если вы хотите отменить последнюю миграцию по какой-либо причине, выполните следующую команду :
php artisan migrate:rollback
вы можете найти дополнительную информацию о миграции в docs
эти вещи работают на laravel 5.1.
во-первых, на вашем терминале выполнить этот код
php artisan make:migration add_paid_to_users --table=usersпосле этого перейдите в каталог проекта и разверните каталог database - migration и отредактируйте файл add_paid_to_users.php, добавьте этот код
public function up() { Schema::table('users', function (Blueprint $table) { $table->string('paid'); //just add this line }); }после этого вернитесь к своему терминалу и выполните эту команду
php artisan migrateнадеюсь, что это поможет.
первый откат предыдущей миграции
php artisan migrate:rollbackпосле этого вы можете изменить существующий файл миграции (добавить новые , переименовать или удалить столбцы), а затем повторно запустить файл миграции
php artisan migrate
Comments