Как я могу переименовать столбец в laravel, используя миграцию?

У меня есть столбцы, как упоминалось ниже:

public function up()
{
Schema::create('stnk', function(Blueprint $table)
{
$table->increments('id');
$table->string('no_reg', 50)->unique();
$table->string('no_bpkb', 50)->unique();
$table->string('nama_pemilik', 100);
$table->string('alamat');
$table->string('merk', 50);
$table->string('tipe', 50);
$table->string('jenis', 50);
$table->smallInteger('tahun_pembuatan');
$table->smallInteger('tahun_registrasi');
$table->smallInteger('isi_silinder');
$table->string('no_rangka', 50);
$table->string('no_mesin', 50);
$table->string('warna', 50);
$table->string('bahan_bakar', 50);
$table->string('warna_tnkb', 50);
$table->string('kode_lokasi', 50);
$table->date('berlaku_sampai');
$table->timestamps();

$table->index('created_at');
$table->index('updated_at');
});

}

Я сделал сеялку к столу

Теперь я хочу переименовать id в id_stnk,
Я добавил «доктрина / дбал» в «композитор» и сделать composer update,

Я сделал миграцию php artisan migration:make rename_column,
Затем я добавил новый метод в rename_column:

Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');

});

И тогда я попытался запустить команду php artisan migrate но я получил ошибку, как упоминалось ниже:

[Ulluminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1025 Error on rename of './my_database/#sql -447_33' to './my_database/stnk' (error: 150) (SQL: ALTER TABLE stnk CHANGE id id_stnk INT UNSIGENED AUTO_INCREMENT NOT NULL)

[PDOException]
SQLSTATE[HY000]: General error: 1025  Error on rename  of './my_database/#sql -447_33' to './my_database/stnk' (error: 150)

40

Решение

Вам нужно создать еще один файл миграции и поместить его туда:

Бежать

Laravel 4:    php artisan migrate:make rename_stnk_column
Laravel 5:    php artisan make:migration rename_stnk_column

Затем внутри нового файла миграции:

class RenameStnkColumn extends Migration
{

public function up()
{
Schema::table('stnk', function(Blueprint $table) {
$table->renameColumn('id', 'id_stnk');
});
}public function down()
{
Schema::table('stnk', function(Blueprint $table) {
$table->renameColumn('id_stnk', 'id');
});
}

}
59

Другие решения

Первое, что вы хотите сделать, это создать файл миграции.

Введите в командной строке

php artisan migrate:make rename_stk_column --table="YOUR TABLE" --create

После создания файла. Откройте новый созданный файл миграции в папке вашего приложения в базе данных / миграции.

В вашем методе up вставьте это:

Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
}

и в вашем методе дауна:

    Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id_stnk', 'id);
});
}

затем в командной строке просто введите

php artisan migrate

Тогда воллах! Вы только что переименовали идентификатор в id_stnk.
Кстати, вы можете использовать

php artisan migrate:rollback

отменить изменения. Удачи

15

Чтобы переименовать столбец, вы можете использовать метод renameColumn в построителе схемы. * Перед переименованием столбца обязательно добавьте Доктрина / DBAL зависимость от вашего файла composer.json. *

Или вы можете просто потребовать пакет, используя композитор …

composer require doctrine/dbal

Источник: https://laravel.com/docs/5.0/schema#renaming-columns

Замечания: использование сделать: миграция и не мигрировать: сделать для Laravel 5.x

7

Я добавил сюда 0,02 доллара, поскольку ни один из ответов не сработал, но направил меня по правильному пути. Случилось так, что предыдущее внешнее ограничение вызывало ошибку. Очевидно, когда вы думаете об этом.

Так что в вашей новой миграции up Метод, сначала удалите это исходное ограничение, переименуйте столбец, затем снова добавьте ограничение с новым именем столбца. в down метод, вы делаете прямо противоположное, чтобы вернуться к проданным настройкам.

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('proxy4s', function (Blueprint $table) {
// Drop it
$table->dropForeign(['server_id']);

// Rename
$table->renameColumn('server_id', 'linux_server_id');

// Add it
$table->foreign('linux_server_id')->references('id')->on('linux_servers');
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('proxy4s', function (Blueprint $table) {
// Drop it
$table->dropForeign(['linux_server_id']);

// Rename
$table->renameColumn('linux_server_id', 'server_id');

// Add it
$table->foreign('server_id')->references('id')->on('linux_servers');
});
}

Надеюсь, это сэкономит кому-то время в будущем!

6

Выполните следующие действия, соответственно, для переименования файла миграции столбцов.

1- Есть ли в вашем проекте библиотека Doctrine / dbal? Если вы не запустили команду первым

composer require doctrine/dbal

2- создать файл миграции обновления для обновления старого файла миграции.
Предупреждение (нужно иметь одно и то же имя)

php artisan make:migrate update_oldFileName_table

например, мое старое имя файла миграции: create_users_table
имя файла обновления должно: update_users_table

3- update_oldNameFile_table.php

Schema::table('users', function (Blueprint $table) {
$table->renameColumn('from', 'to');
});

«от» моего старого имени столбца и «до» моего нового имени столбца

4- Наконец, запустите команду миграции

php artisan migrate

Ссылка на источник: документ Laravel

3

Приведенный выше ответ хорош, или, если он вам не помешает, просто откатите миграцию, измените имя и снова запустите миграцию.

 php artisan migrate:rollback
1
По вопросам рекламы [email protected]