Comment ajouter une nouvelle colonne à un tableau existant dans une migration Laravel ?

Introduction

Les migrations Laravel vous permettent de gérer la structure de votre base de données en créant de nouvelles tables et colonnes. Les migrations Laravel sont comme un contrôle de version pour votre base de données.

Dans ce tutoriel, vous apprendrez comment ajouter une nouvelle colonne à une table existante dans une migration Laravel.!

Création d’une nouvelle table avec une migration

Commençons par créer une nouvelle table appelée tasks.

Afin de créer une nouvelle table, vous pouvez utiliser la commande suivante artisan suivante :

php artisan make:migration create_tasks_table

Sortie :

Created Migration: 2020_12_23_133641_create_tasks_table

Ceci génère un nouveau fichier de migration pour vous :

database/migrations/2020_12_23_133641_create_tasks_table.php

Le contenu du fichier ressemblerait à ceci :

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateTasksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('tasks', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('tasks');
    }
}

Les migrations Laravel utiliseront le fichier Schema pour créer et modifier les tables et les colonnes de la base de données :

        Schema::create('tasks', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });

À l’intérieur de la façade, vous pouvez spécifier les différentes colonnes que vous souhaitez ajouter.

Donc allons-y et ajoutons une nouvelle colonne appelée title qui contiendra le titre de nos tâches :

        Schema::create('tasks', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->timestamps();
        });

Après cela, pour exécuter la migration, utilisez ceci artisan ici :

php artisan migrate

Sortie :

Migrating: 2020_12_23_133641_create_tasks_table
Migrated:  2020_12_23_133641_create_tasks_table (0.02 seconds)

Ensuite, voyons comment ajouter une nouvelle colonne à cette table existante sans modifier l’ancien fichier de migration.

Ajouter une nouvelle colonne à une table existante

Supposons que nous voulions ajouter une colonne à une table existante. description à notre fichier tasks où nous conserverions la description des tâches que nous avons.

Pour ce faire, nous pouvons à nouveau utiliser le php artisan make:migration mais cette fois-ci, nous pouvons spécifier la table à laquelle nous voulons ajouter la colonne avec l’attribut --table argument :

php artisan make:migration add_description_to_tasks --table="tasks"

Sortie :

Created Migration: 2020_12_23_134156_add_description_to_tasks

Il est considéré comme une bonne pratique d’utiliser un nom descriptif pour votre migration.

Ceci va à nouveau générer un nouveau fichier à :

database/migrations/2020_12_23_134156_add_description_to_tasks.php

Note : Le timestamp au début du fichier indique la date de création du fichier.

Le contenu du fichier ressemblera à ceci :

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class AddDescriptionToTasks extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('tasks', function (Blueprint $table) {
            //
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('tasks', function (Blueprint $table) {
            //
        });
    }
}

Pour ajouter la nouvelle colonne, il suffit de la spécifier à nouveau dans le champ up() :

public function up()
{
    Schema::table('tasks', function($table) {
        $table->text('description');
    });
}

Une autre chose importante à garder à l’esprit ici est que vous devez mettre à jour le fichier down() et ajouter une méthode dropColumn() indiquant que si quelqu’un exécute un rafraîchissement de la migration, la colonne doit être abandonnée :

public function down()
{
    Schema::table('tasks', function($table) {
        $table->dropColumn('description');
    });
}

Enfin, sauvegardez le fichier et relancez vos migrations :

php artisan migrate

Sortie :

Migrating: 2020_12_23_134156_add_description_to_tasks
Migrated:  2020_12_23_134156_add_description_to_tasks (0.03 seconds)

Et c’est à peu près tout ! C’est ainsi que vous pouvez ajouter une nouvelle colonne à une table existante !

Nouveau Tutoriel

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.