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
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_tableCela 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 migrateLe 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.
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.
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:generatePour 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,commentsPour 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" --squashLa capture ci-dessous illustre cela dans mon terminal :
Pour plus d'options, nous vous recommandons de consulter l'aide :
php artisan help migrate:generatePortez-vous bien ! 😎
		 Cette publication vous a plu ?
		Partagez-la avec vos ami(e)s sur les réseaux sociaux.
	
 
  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 profilAutres publications
Voir toutes les publication de Wilo Ahadi
Sélection ebook
10 Laravel tips and techniques for your next PHP project
Développement web
 
            
            
Commentaires