Я не могу понять, как добавить новый столбец в мою существующую таблицу базы данных, используя инфраструктуру Laravel.
Я пытался редактировать файл миграции, используя...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
В терминале я выполняю php artisan migrate:install
и migrate
.
Как добавить новые столбцы?
Чтобы создать перенос, вы можете использовать команду migrate: make в CLIS 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);
, чтобы добавить это поле после определенного столбца.
php artisan migrate
Я добавлю к 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"]
при создании новых миграций, которые добавят больше шаблонов в ваши миграции. Небольшая точка, но полезно при загрузке из них!
Blueprint
был добавлен в Laravel 5.1. Просто уточнение это все.
Если вы используете Laravel 5, команда будет:
php artisan make:migration add_paid_to_users
Все команды для создания вещей (контроллеры, модели, миграции и т.д.) были перемещены под командой make:
.
php artisan migrate
все равно остается тем же.
Вы можете добавить новые столбцы в первоначальный метод 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.
create_users_table
, затем, если я добавляю столбцы: add_email_password_columns_to_users
.
Создайте новую миграцию, выполнив следующую команду: make: миграция
Пример :
php artisan make:migration add_store_id_to_users_table --table=users
В папке базы данных/миграции у вас есть новый файл миграции, что-то вроде:
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
Вы можете найти больше информации о миграциях в документации
вы можете просто изменить существующий файл миграции, например, добавить столбец в своей таблице, а затем ввести свой терминал:
$ php artisan migrate:refresh
это работает на laravel 5.1.
во-первых, на вашем терминале выполните этот код
php artisan make:migration add_paid_to_users --table=users
после этого перейдите в каталог вашего проекта и разверните базу данных каталога - перенесите и отредактируйте файл 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