Je n'arrive pas à trouver comment ajouter une nouvelle colonne à ma table de base de données existante à l'aide du framework Laravel.
J'ai essayé d'éditer le fichier de migration en utilisant...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
Dans le terminal, j'exécute php artisan migrate:install
et migrate
.
Comment puis-je ajouter de nouvelles colonnes ?
Pour créer une migration, vous pouvez utiliser la commande migrate:make sur l'Artisan CLI. Utilisez un nom spécifique pour éviter tout conflit avec des modèles existants.
pour Laravel 3 :
php artisan migrate:make add_paid_to_users
pour Laravel 5+ :
php artisan make:migration add_paid_to_users_table --table=users
Vous devez ensuite utiliser la méthode Schema::table()
(puisque vous accédez à une table existante, et non pas en créer une nouvelle). Et vous pouvez ajouter une colonne comme ceci :
public function up()
{
Schema::table('users', function($table) {
$table->integer('paid');
});
}
et n'oubliez pas d'ajouter l'option de retour en arrière :
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('paid');
});
}
Ensuite, vous pouvez exécuter vos migrations :
php artisan migrate
Tout ceci est bien couvert dans la documentation de Laravel 3 :
Et pour Laravel 4 / Laravel 5 :
[Schema Builder][3]
[Migrations][4]
[1] : http://laravel3.veliovgroup.com/docs/database/schema [2] : http://laravel3.veliovgroup.com/docs/database/migrations [3] : http://laravel.com/docs/5.0/schema [4] : http://laravel.com/docs/5.0/migrations
Modifier :
utilisez $table->integer('paid' ;)->after('whichever_column' ;);
pour ajouter ce champ après une colonne spécifique.
Si vous utilisez Laravel 5, la commande sera la suivante ;
php artisan make:migration add_paid_to_users
Toutes les commandes permettant de créer des objets (contrôleurs, modèles, migrations, etc.) ont été déplacées sous la commande make:
.
La commande php artisan migrate
reste cependant la même.
Vous pouvez ajouter de nouvelles colonnes dans la méthode initiale Schema::create
comme ceci :
Schema::create('users', function($table) {
$table->integer("paied");
$table->string("title");
$table->text("description");
$table->timestamps();
});
Si vous avez déjà créé une table, vous pouvez ajouter des colonnes supplémentaires à cette table en créant une nouvelle migration et en utilisant la méthode Schema::table
:
Schema::table('users', function($table) {
$table->string("title");
$table->text("description");
$table->timestamps();
});
La documentation est assez complète à ce sujet et n'a pas trop changé entre la [version 3][1] et la [version 4][2].
[1] : http://laravel.com/docs/database/schema#adding-columns [2] : http://four.laravel.com/docs/schema#adding-columns