J'ai une table de base de données existante et je veux y ajouter une colonne. Cependant, lorsque j'exécute le php artisan migrate
commande, il ne dit rien à migrer. Mais j'ajoute déjà un schéma pour ajouter des colonnes de table. J'ai lu quelques articles et liens que je devrais exécuter php artisan migrate:refresh
avant les nouvelles colonnes à ajouter. Le problème est qu'il effacera mes données existantes dans ma table. Existe-t-il un moyen de réaliser la migration et d'ajouter avec succès des colonnes dans ma table sans supprimer mes données? S'il vous plait, j'ai besoin de votre aide avec ceci. Merci beaucoup. Voici mon code de migration.
public function up()
{
//
Schema::create('purchase_orders', function(Blueprint $table){
$table->increments('id');
$table->string('po_code');
$table->text('purchase_orders');
$table->float('freight_charge');
$table->float('overall_total');
$table->timestamps();
});
Schema::table('purchase_orders', function(Blueprint $table){
$table->string('shipped_via');
$table->string('terms');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::drop('purchase_orders');
}
Je veux ajouter la colonne shipped_via
et terms
dans mon purchase_orders
table.
Utilisez la commande ci-dessous pour modifier la table existante
php artisan make:migration add_shipped_via_and_terms_colums_to_purchase_orders_table --table=purchase_orders
utilisez --create
pour créer la nouvelle table et --table
pour modifier la table existante.
Maintenant, un nouveau fichier de migration sera créé. A l'intérieur de la fonction up()
dans ce fichier, ajoutez ces lignes
Schema::table('purchase_orders', function(Blueprint $table){
$table->string('shipped_via');
$table->string('terms');
});
Et puis exécutez php artisan migrate
Laravel a une table dans votre base de données où il garde une trace de toutes les migrations qui sont déjà exécutées. Ainsi, en modifiant uniquement le fichier de migration Laravel ne réexécutera pas automatiquement cette migration pour vous. La migration est déjà exécutée par Laravel.
Donc, la meilleure chose à faire est de simplement créer une nouvelle migration et de mettre le morceau de code que vous avez déjà (vous étiez sur la bonne voie!).
public function up()
{
//
Schema::table('purchase_orders', function(Blueprint $table){
$table->string('shipped_via');
$table->string('terms');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
Vous n'avez pas besoin de remplir le cas de la fonction vers le bas, la table sera supprimée par votre migration actuelle de Purchase_orders.
Pour migrer la nouvelle migration, exécutez simplement:
php artisan migrate