Подтвердить что ты не робот

Добавьте столбец таблицы sql до или после определенного другого столбца - путем миграции в Laravel 4.1

Таблица "пользователи":

|id|name|address|post_code|deleted_at|created_at|

и я хочу добавить столбец "phone_nr" где-то между "id" и "deleted_at"

Возможно ли это путем миграции в Laravel 4.1?

4b9b3361

Ответ 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

Ответ 2

Ответ Джеймса по-прежнему верен. Однако Laravel 5 немного изменил синтаксис make make:

php artisan make:migration add_google_auth_to_users_table --table=users

(Я знаю, что этот вопрос отмечен Laravel 4, однако он занимает довольно высокое значение для вопроса;))

Ответ 3

Для всех, кто интересуется запросом @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 не существует.

Ответ 4

Я создал следующую миграцию:

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