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_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.
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: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 :
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, 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