Laravel : Générer la migration d'une table existante

Mis à jour il y a 2 ans

Un tutoriel pour créer une migration contenant le schéma (structure) d'une table existante dans la base de données d'un projet Laravel

Wilo Ahadi

Auteur

Wilo A.

Technologies

Laravel, PHP
Voir aussi Un tutoriel pour afficher sur une page web les éléments qui se trouvent au niveau de la barre de défilement (scroll bar) avec wow.js en les animant avec animate.css En savoir plus

Introduction aux migrations

Dans un projet Laravel, une migration décrit le schéma ou la structure d’une table de la base de données.  On crée le fichier de migration d'une table « posts » en exécutant la commande artisan suivante :

php artisan make:migration create_posts_table

Cela génère le fichier {timestamp}_create_posts_table.php (« 2021_09_21_160132_create_posts_table » pour moi) dans le répertoire database/migrations. Dans ce fichier, nous pouvons décrire la structure de la table « posts » de la manière suivante :

// ...
class CreatePostsTable extends Migration
{	
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->longtext('content');
            $table->timestamps();
        });
    }
    // ...
}

Puis pour importer (créer) cette table dans la base de données, on exécute la commande artisan suivante :

php artisan migrate

Le processus de migration va dans un seul sens, c'est à dire qu'à partir d'un fichier de migration existant, nous créons (importons) une table dans la base de données. Mais comment faire pour aller dans l’autre sens : d'une table existante dans la base de données, obtenir le fichier de migration décrivant son schéma ?

Nous voulons voir dans ce guide comment générer automatiquement les migrations des tables existantes d'une base de données avec leurs indexes, clés primaires et étrangères en utilisant les packages Laravel Migrations Generator : kitloong/laravel-migrations-generator et xethron/migrations-generator.

Démonstration Laravel migrations-generator

Installer Laravel Migrations Generator

Pour télécharger ou importer Laravel Migrations Generator avec ses dépendances dans un projet Laravel >= 5.6, on exécute la commande composer suivante :

composer require --dev "kitloong/laravel-migrations-generator"

Pour un projet Laravel <= 5.5, la commande suivante :

composer require --dev "xethron/migrations-generator"

Pour Laravel 4, une fois migrations-generator importé, nous devons renseigner le Service Provider au tableau $providers du fichier config/app.php :

<?php

return [
    // ...,

    'providers' => [
        // ...,	
        Way\Generators\GeneratorsServiceProvider::class,
        Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
    ],

    // ...
];

Notez bien : Le package kitloong/laravel-migrations-generator est un clone du package xethron/migrations-generator. Il présente plus de fonctionnalités et permet de supporter les versions >= 5.6 de Laravel.

Utiliser Laravel Migrations Generator

Pour créer (générer) les fichiers de migration de toutes les tables d'une base de données, on exécute la commande artisan suivante :

php artisan migrate:generate

Pour spécifier les tables pour lesquelles générer les migrations, prenons par exemple « posts », « users » et « comments » uniquement, on les indique après l'option migrate:generate :

php artisan migrate:generate posts,users,comments

Pour ignorer certaines tables, on les indique à travers l'option --ignore :

php artisan migrate:generate –-ignore="users,comments"

Par défaut, Laravel Migrations Generator génère plusieurs fichiers de migration pour chaque table, nous pouvons les assembler dans un seul fichier si nous utilisons kitloong/laravel-migrations-generator avec l'option --squash :

php artisan migrate:generate –-tables="cities,countries" --squash

La capture ci-dessous illustre cela dans mon terminal :

--squash avec kitloong/laravel-migrations-generator

Pour plus d'options, nous vous recommandons de consulter l'aide :

php artisan help migrate:generate

Portez-vous bien ! 😎

Cette publication vous a plu ?
Partagez-la avec vos ami(e)s sur les réseaux sociaux.

Wilo Ahadi

Wilo Ahadi, l'auteur

Passionné de l'informatique, je suis spécialiste en techniques des systèmes et réseaux, développeur web et mobile, infographiste et designer, ... J'aime partager mon expérience en formant sur la plateforme Akili School

Voir profil

Commentaires