J'ai des colonnes comme mentionné ci-dessous:
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');
});
}
J'ai fait semoir à table stnk
Maintenant, je veux renommer id
en id_stnk
.
J'ai ajouté un "doctrine / dbal" dans le "composer" et fais un composer update
.
J'ai fait la migration php artisan migration:make rename_column
.
Ensuite, j'ai ajouté une nouvelle méthode à rename_column:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
Et puis j'ai essayé d'exécuter la commande php artisan migrate
mais j'ai eu une erreur comme mentionné ci-dessous:
[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)
id
sur lastnk
table.make:migration
et nonmigrate:make
"doctrine/dbal": "~2.3"
sans que vous obteniez des erreurs très obscures. Il a été soulevé comme un bogue ici github.com/laravel/framework/issues/3116 et avec une mention sans doute moins utile dans la documentation ici laravel.com/docs/5.0/schema#renaming-columnsLa première chose à faire est de créer votre fichier de migration.
Tapez votre ligne de commande
php artisan make:migration rename_stk_column --table="YOUR TABLE" --create
Après avoir créé le fichier. Ouvrez le nouveau fichier de migration créé dans votre dossier d'application sous base de données / migrations.
Dans votre méthode up, insérez ceci:
Schema::table('stnk', function(Blueprint $table) { $table->renameColumn('id', 'id_stnk'); }); }
et dans votre méthode down:
Schema::table('stnk', function(Blueprint $table) { $table->renameColumn('id_stnk', 'id); }); }
puis dans votre ligne de commande tapez simplement
Alors wollah! vous venez de renommer id en id_stnk. BTW, vous pouvez utiliser
php artisan migrate:rollback
pour annuler les modifications. Bonne chance
la source
Suivez ces étapes, respectivement pour renommer le fichier de migration de colonne.
1- Existe-t-il une bibliothèque Doctrine / dbal dans votre projet. Si vous n'avez pas exécuté la commande en premier
composer require doctrine/dbal
2- créer un fichier de migration de mise à jour pour mettre à jour l'ancien fichier de migration. Attention (besoin d'avoir le même nom)
php artisan make:migration update_oldFileName_table
par exemple mon ancien nom de fichier de migration: create_users_table le nom du fichier de mise à jour doit: update_users_table
3- update_oldNameFile_table.php
Schema::table('users', function (Blueprint $table) { $table->renameColumn('from', 'to'); });
'de' mon ancien nom de colonne et 'vers' mon nouveau nom de colonne
4- Enfin exécutez la commande migrate
Lien source: document laravel
la source
Renommer les colonnes (Laravel 5.x)
Pour renommer une colonne, vous pouvez utiliser la méthode renameColumn sur le générateur de schéma. * Avant de renommer une colonne, assurez-vous d'ajouter la dépendance doctrine / dbal à votre fichier composer.json. *
Ou vous pouvez simplement avoir besoin du package en utilisant composer ...
composer require doctrine/dbal
Source: https://laravel.com/docs/5.0/schema#renaming-columns
Remarque: utilisez make: migration et non migrate: make pour Laravel 5.x
la source
Jeter mon 0,02 $ ici car aucune des réponses n'a fonctionné, mais m'a envoyé sur le bon chemin. Ce qui s'est passé, c'est qu'une contrainte étrangère précédente lançait l'erreur. Évident quand on y pense.
Ainsi, dans la
up
méthode de votre nouvelle migration , supprimez d'abord cette contrainte d'origine, renommez la colonne, puis ajoutez à nouveau la contrainte avec le nouveau nom de colonne. Dans ladown
méthode, vous faites exactement le contraire pour revenir au paramètre vendu./** * 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'); }); }
J'espère que cela fera gagner du temps à quelqu'un dans le futur!
la source
La réponse ci-dessus est excellente ou si cela ne vous fera pas de mal, annulez simplement la migration, modifiez le nom et réexécutez la migration.
php artisan migrate:rollback
la source