У меня есть столбцы, как указано ниже:
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'); }); }
Я сделал сеялку для stnk стола
Теперь я хочу переименовать id
в id_stnk
.
Я добавил «doctrine / dbal» в «композитор» и сделал 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)
Вам нужно создать еще один файл миграции – и поместите его туда:
Бег
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($t) { $t->renameColumn('id', 'id_stnk'); }); } public function down() { Schema::table('stnk', function($t) { $t->renameColumn('id_stnk', 'id'); }); } }
Первое, что вы хотите сделать, – создать файл миграции.
Введите в командной строке
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
Тогда wollah! вы только что переименовали id в id_stnk. Кстати, вы можете использовать
php artisan migrate:rollback
для отмены изменений. Удачи
Бросив мои $ 0,02 сюда, так как ни один из ответов не работал, но отправил меня по правильному пути. Случилось так, что предыдущее внешнее ограничение вызывало ошибку. Очевидно, когда вы думаете об этом.
Таким образом, в вашем новом методе миграции сначала снимите это исходное ограничение, переименуйте столбец, а затем добавьте ограничение снова с новым именем столбца. В методе « 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'); }); }
Надеюсь, это спасет кого-то в будущем!
Чтобы переименовать столбец, вы можете использовать метод renameColumn в построителе Схемы. * Перед переименованием столбца обязательно добавьте зависимость doctrine / dbal к вашему файлу composer.json. *
Или вы можете просто потребовать пакет, используя композитор …
composer require doctrine/dbal
Источник: https://laravel.com/docs/5.0/schema#renaming-columns
Примечание. Используйте make: миграция и не перенос : make для Laravel 5.x
Вышеупомянутый ответ велик, или если это не повредит вам, просто отмените миграцию и измените имя и снова выполните миграцию.
php artisan migrate:rollback