Таблица "пользователи":
|id|name|address|post_code|deleted_at|created_at|
и я хочу добавить столбец "phone_nr" где-то между "id" и "deleted_at"
Возможно ли это путем миграции в Laravel 4.1?
Таблица "пользователи":
|id|name|address|post_code|deleted_at|created_at|
и я хочу добавить столбец "phone_nr" где-то между "id" и "deleted_at"
Возможно ли это путем миграции в Laravel 4.1?
Да. Создайте новую миграцию с помощью php artisan migrate:make update_users_table
.
Затем используйте команду table
следующим образом (если вы используете MySQL!):
Schema::table('users', function($table)
{
$table->string('phone_nr')->after('id');
});
Как только вы закончите перенос, сохраните его и запустите с помощью php artisan migrate
, и ваша таблица будет обновлена.
Документация: https://laravel.com/docs/4.2/migrations#column-modifiers
Ответ Джеймса по-прежнему верен. Однако Laravel 5 немного изменил синтаксис make make:
php artisan make:migration add_google_auth_to_users_table --table=users
(Я знаю, что этот вопрос отмечен Laravel 4, однако он занимает довольно высокое значение для вопроса;))
Для всех, кто интересуется запросом @rahulsingh о добавлении нескольких столбцов подряд после одного конкретного столбца:
$table->integer('col1')->after('ref_col');
$table->integer('col2')->after('what');
Вы можете сделать это, просто написав новые поля в обратном порядке, например:
$table->integer('col4')->after('ref_col');
$table->integer('col3')->after('ref_col');
$table->integer('col2')->after('ref_col');
$table->integer('col1')->after('ref_col');
col2
эту миграцию, вы обнаружите, что ваши новые поля col
, col2
,... расположены в col2
порядке после ссылочного поля ref_col
.
К сожалению, нет функции before()
для добавления полей перед существующим полем. (Если бы это существовало, мы могли бы сохранить вышеупомянутые утверждения в их реальном порядке.)
Вы не можете создать цепочку с полями, которые еще не существуют, например:
$table->integer('col1')->after('ref_col');
$table->integer('col2')->after('col1');
$table->integer('col3')->after('col2');
$table->integer('col4')->after('col3');
Это связано с тем, что план миграции скомпилирован в один запрос, выполняемый как один, поэтому, когда дело доходит до добавления col2
ваш движок базы данных будет жаловаться, что col1
не существует.
Я создал следующую миграцию:
php ремесленник делает: миграция update_nvm_table
2019_07_10_130441_update_nvm_table.php
И внутри:
public function up()
{
Schema::table('nvm', function (Blueprint $table) {
$table->renameColumn('data1', 'call_owner');
$table->renameColumn('data2', 'transfer_type');
$table->string('transfer_data', 50)->nullable();
});
}
public function down()
{
Schema::table('nvm', function (Blueprint $table) {
$table->dropColumn('transfer_data');
$table->renameColumn('call_owner', 'data1');
$table->renameColumn('transfer_type', 'data2');
});
}
Я надеюсь, что это может быть ссылкой для вас! : D