Symfony et la base de données
Mon projet avance. J’utilise maintenant une base de données avec tout ce que fourni Symfony.
Encore une fois, je ne fais pas un didacticiel. Je vais juste dire rapidement ce que j’ai dû faire et donner mes impressions.
Configurer sa base de données
En un mot: fastoche !
En lisant la doc 08-Inside-the-Model-Layer.txt, ça se fait tout seul.
Il y a un fichier de configuration pour la connexion à la base de données, pour l’instant, rien de spécial. Mais il y a surtout le schema de la base écrit en YAML, et ça c’est sympa. Voilà à quoi ressemble le mien pour l’instant:
Vous remarquerez que parfois, je ne met pas le type du champ. C’est parce qu’il y a une convention de nommage qui permet d’affecter automatiquement des types. Comme id
qui est un INTEGER
, primary key
et auto-increment
.
Création des classes
Ce que j’aime particulièrement, c’est la création des classes automatiquement avec les getter et les setter. A chaque fois qu’on modifie le schema, on peut relancer la génération des fonctions de base. Ca fait gagner un temps fou ! J’ai donc déjà les méthodes:
- Law->getId()
- Law->getMessage()
- Law->getCategory() (et là, ce qui est cool, c’est qu’il me renvoit un object de type Category, de l’autre table)
- Category->getId()
- Category->getLabel()
- Category->delete() (si j’efface une catégorie, ça va effacer toutes les lois qui étaient dedans)
- etc.
De plus, il y a aussi des classes avec des méthodes statiques pour retrouver des enregistrements:
- LawPeer::retrieveByPk($id)
- LawPeer::doSelect($criteria)
- CategoryPeer::doCount()
- etc.
Génération de l’admin
Et pour couronner le tout, on peut même générer un site admin pour gérer ses données. Tout ça en ligne de commande. Ca se passe dans la doc 14-Generators.txt.
La seule chose que le générateur ne fait pas, c’est le routing. Voilà ce que j’ai dû écrire moi même:
Et dans l’admin, quand je crée/edite une loi, je peux choisir la catégorie dans une liste déroulante. Symfony m’a retrouvé toutes les catégories existantes. J’arrive même pas à imaginer le temps que ça m’aurait pris pour faire ça.
Conclusion
Ca déchire !
J’continue le projet …
Commentaires