# Migration
Les migrations vous permettent de définir un schéma de base de donnée pour votre application. Vous pouvez y ajouter, modifier, une table, des colonnes à l'intérieur de ces tables... Pour maintenir et gérer votre base de donnée, on utilisera les migrations.
Les migrations dans notre projet se situent dans le dossier database/migrations/ Il y en a 3 par défaut.
Chaque migration est un fichier .php dans lequel se situe une classe.
- La fonction up() crée la table et définie sa structure.
- La fonction down() supprime la table.
# Créer une migration
Pour créer une migration, tapez la commande suivante (ici l'example est une table contenant des voitures)
php artisan make:migration create_voitures_table
# Ajouter une colonne à notre table
Pour ajouter une nouvelle colonne à notre table, il faut aller dans la migration que l'on vient de créer et ajouter par exemple :
$table->string('marque');
$table->string('modele');
class CreateVoituresTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('voitures', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('marque');
$table->string('modele');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pizzas');
}
}
Ensuite, nous allons faire un rollback pour revenir à l'état initial, cela va supprimer les colonnes et les remettre avec la nouvelle que nous venons d'ajouter :
php artisan migrate:refresh
# Actualiser/Lancer une nouvelle migration
Pour lancer une nouvelle migration dans la base de données, tapez :
php artisan migrate
Cela va ajouter toutes les tables crées à la base de données.
# Ajouter une NOUVELLE colonne (sans prendre de risque)
php artisan make:migration add_price_to_voitures_table
Cela va créer une nouvelle migration et sélectionner la table correcte pour y ajouter la nouvelle colonne.
public function up()
{
Schema::table('voitures', function (Blueprint $table) {
$table->integer('price');
});
}
Pour sauvegarder ces changements, il faudra taper :
php artisan migrate
# Commandes migration
php artisan
migrate
migrate:fresh Supprime toutes les tables et re-fait toutes les migrations
migrate:install Créer le dossier pour les migrations
migrate:refresh Reset et re-lance toutes les migrations
migrate:reset Fait un retour en arrière de toutes les migrations de la BDD (rollback)
migrate:rollback Fait un retour en arrière de la dernière migration de la BDD (rollback)
migrate:status Affiche le status de chaque migration