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 le semoir à la table stnk
Maintenant, je veux renommer id
en id_stnk
.
J'ai ajouté un "doctrine/dbal" dans le "compositeur" et faire un composer update
.
J'ai fait la migration php artisan migration:make rename_column
.
Puis j'ai ajouté une nouvelle méthode pour renommer_colonne:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
Et puis j'ai essayé de lancer la commande php artisan migrate
mais j'ai eu l'erreur mentionnée 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)
Vous devez créer un autre fichier de migration - et le placer dans celui-ci:
Courir
Laravel 4: php artisan migrate:make rename_stnk_column
Laravel 5: php artisan make:migration rename_stnk_column
Puis à l'intérieur du nouvel emplacement du fichier de migration:
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');
});
}
}
la première chose à faire est de créer votre fichier de migration.
Tapez dans 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'applications sous la 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
php artisan migrate
Alors wollah! vous venez de renommer id en id_stnk. BTW vous pouvez utiliser
php artisan migrate:rollback
annuler les modifications. Bonne chance
Pour renommer une colonne, vous pouvez utiliser la méthode renameColumn dans le générateur de schéma. * Avant de renommer une colonne, veillez à bien ajouter doctrine/dbal dépendance à votre fichier composer.json. *
Ou vous pouvez simplement demander le package à l'aide de 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
Jeter mon 0,02 $ ici puisque aucune des réponses ne marchait, mais m’envoya sur la bonne voie. Ce qui s’est passé, c’est qu’une contrainte étrangère antérieure lançait l’erreur. Évident quand on y pense.
Ainsi, dans la méthode up
de votre nouvelle migration, commencez par supprimer la contrainte d'origine, renommez la colonne, puis ajoutez-la à nouveau avec le nouveau nom de colonne. Dans la méthode down
, 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 un peu de temps à quelqu'un!
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ée 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:migrate update_oldFileName_table
par exemple, mon ancien nom de fichier de migration: create_users_table nom de 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 'à' mon nouveau nom de colonne
4 - Enfin, lancez la commande migrate
php artisan migrate
Lien source: document laravel
La réponse ci-dessus est excellente ou si cela ne vous fait pas mal, annulez simplement la migration, changez le nom et exécutez à nouveau la migration.
php artisan migrate:rollback