IX. Un concepteur de schéma▲
Dans les chapitres précédents, on a plusieurs fois dû créer des migrations, des populations, des contrôleurs, des modèles… Artisan possède des commandes pour effectuer certaines de ces opérations, mais il nous a fallu créer pas mal de code qui, de toute évidence, pourrait plus ou moins facilement être automatisé.
Il est possible d'améliorer les commandes d'Artisan ou même de s'en créer des nouvelles. Il existe aussi des assistants pour nous aider dans ces tâches un peu pénibles ou répétitives. Je vous propose dans ce chapitre de découvrir le concepteur de schéma Laravel Schema Designer.
IX-A. Mise en route▲
Laravel Schema Designer est un concepteur de schéma, c'est-à-dire qu'il vous permet de réaliser de façon visuelle des tables avec toutes leurs caractéristiques ainsi que les relations qui les unissent. À l'issue de cette composition graphique, il peut générer le code des migrations, les modèles, et bien d'autres choses…
On va voir comment on l'utilise avec un exemple simple de base bibliographique qui nous servira dans le prochain chapitre.
Mais la première chose que vous devez faire est de créer un compte (gratuit) sur le site.
Ensuite vous donnez un nom à votre base :
Vous pouvez alors commencer à créer !
Le but est d'obtenir ces quatre tables avec ces relations :
On a les relations :
- 1:n entre les éditeurs et les livres ;
- n:n entre les auteurs et les livres.
IX-B. Créer des tables▲
IX-B-1. Table des auteurs▲
Il faut cliquer sur ce lien pour ajouter une table :
Ensuite vous renseignez les champs :
Vous avez alors votre table visuellement à l'écran :
On va ajouter une colonne à cette table, il suffit de cliquer sur le bouton avec le signe + :
Le formulaire est très complet, il suffit de le renseigner :
Après validation on voit notre nouvelle colonne dans la table :
IX-B-2. Table des éditeurs▲
Vous allez procéder exactement de la même manière pour la table des éditeurs, on va juste choisir une autre couleur :
Créez aussi une colonne nom avec les mêmes propriétés que celles de la table des auteurs. Finalement vous avez donc la table des éditeurs :
IX-B-3. Table des livres▲
Créez la table des livres :
Ajouter les colonnes titre et description (cochez « fillable » pour les deux) :
On va maintenant ajouter la colonne clé étrangère pour les éditeurs :
La table est maintenant complète :
IX-B-4. Table pivot▲
Il ne nous manque plus que la table pivot entre les auteurs et les livres (plusieurs auteurs peuvent écrire un livre et un auteur peut écrire plusieurs livres). On va renseigner le formulaire comme on l'a fait pour les autres tables même si on sait qu'on n'aura pas besoin de modèle pour cette table, mais c'est nécessaire pour le fonctionnement du concepteur :
Ajoutez les deux clés étrangères comme on l'a fait ci-dessus (une pour les auteurs et l'autre pour les livres), vous devez donc avoir la table ainsi :
IX-C. Créer les relations▲
Maintenant que les tables sont prêtes, on va ajouter les relations.
IX-C-1. Les éditeurs▲
Commençons par la table des éditeurs. Cliquez sur le bouton le plus à gauche :
Renseignez ainsi le formulaire :
La relation se crée visuellement :
IX-C-2. Les livres▲
On va créer la relation réciproque à partir des livres :
On a maintenant les deux relations :
Mais on sait que les livres sont aussi en relation avec les auteurs alors on ajoute cette relation :
IX-C-3. Les auteurs▲
Il ne nous manque plus que la relation réciproque entre auteurs et livres :
On a maintenant terminé notre travail de conception. Si vous êtes un peu perdu, j'ai mis le schéma complet en partage ici.
IX-D. La génération▲
Il ne vous reste plus qu'à cliquer sur ce lien pour tout générer :
Regardez ce que vous recevez :
Ce qui est vraiment intéressant dans tout ça ce sont les migrations et les modèles.
Mettez ces migrations dans une installation fraîche de Laravel en supprimant les deux de base pour les utilisateurs :
Lancez maintenant ces migrations :
Vous créez les tables :
C'est quand même plus sympathique que d'écrire tout le code des migrations.
Récupérez également les modèles qui nous serviront dans le prochain chapitre de ce cours.
IX-E. En résumé▲
- Le concepteur de schéma « Laravel Schema designer » permet de créer de façon graphique un schéma de base de données.
- On peut créer des tables et des relations.
- La génération finale fournit de nombreux fichiers : migrations, modèles, contrôleurs, vues, routes…