Tutoriel Symfony : création d'une base de données via YML

Publié le 28 novembre 2008 par Avi Teboul

De retour avec mon Symfony que je commence à apprécier même si je suis encore bien paumé là-dessus ...

Avant de commencer on fait un petit récap :

Tuto 1 : Symfony : Initialisation d'un projet

Tuto 2 : Symfony : Démarrer un nouveau projet

Allez, on plonge. Perso, je trouve que c'est maintenant que ça devient intéressant !

Ce que Symfony ne fera pas pour vous, c'est créer la base de données. Désolé pour les flemmards, on pointe sur http://127.0.0.1/phpmyadmin/ et on créé un nouvelle base de données (moi je l'ai appelée test_ikule ) .

Pour créer les tables et leurs relations on va utiliser le format YML (on peut aussi le faire avec un XML) .

On va d'abord associer notre projet avec la base qu'on vient de créer.

On ouvre le fichier :  C:\_wamp\www\test_ikule\config\databases.yml et on remplace le contenu par :

all:
  propel:
   class:   sfPropelDatabase
   param:
   dsn:   mysql://root@localhost/test_ikule

Pour les débutants les caractères # veulent dire que les lignes sont désactivées, n'oubliez pas de les enlever nom de votre projet ne sont pas identiques alors il va falloir éditer le fichier propel.ini

Il se trouve là : C:\_wamp\www\test_ikule\config\propel.ini

Rendez-vous aux lignes 3, 6 et 16 pour modifier le nom de votre projet :

Ligne 3 : propel.project   = <nom du projet>
Ligne 6 : propel.database.url   = mysql://root@localhost/<nom de la base de données>
Ligne 16 : propel.output.dir   = C:\_wamp\www\<nom du projet>

Ceci étant fait, nous allons pouvoir commencer le fichier YML qui lui construira nos tables SQL.

Rédaction du YML

On se concentre : cette partie est très importante, elle va générer nos tables SQL, alors on suit bien !
Le fichier YML se trouve dans : C:\_wamp\www\test_ikule\config\schema.yml
Je vous donne d'abord le YML final on l'explique ensuite ...
propel:
 membres:
   id:  { type: integer, required: true, primaryKey: true, autoIncrement:true}
   nom:  { type: varchar, size: 255,required: true}
   prenom:  { type: varchar, size: 255,required: true}
   birthday: { type: date, required: true}
   email:  { type: varchar, size: 255,required: true, index:unique}
   login:  { type: varchar, size: 255,required: true}
   password: { type: varchar, size: 255,required: true}
   site_web: { type: varchar, size: 255}
 categories:
   id: { type: integer, required: true, primaryKey: true, autoIncrement:true}
   libelle: { type: varchar, size: 255,required: true}
   id_parent: { type: integer, foreignTable: categories, foreignReference: id, onDelete: set null}

TRÈS IMPORTANT :
La notation est très importante dans le YML :
 - pas d'espace avant les deux points
 - pas de tabulation du tout !
 - les paramètres sont séparés par une virgule
 - les paramètres sont définis entre des accolades


Donc le format est du type suivant :
propel = nom de la connexion[deux-points][saut de ligne]
[espace]<table>[deux-points][saut de ligne]
[espace][espace]<nom_du_champs1>[deux-points][espace][accolade_ouvrante] param1 [deux-points] valeur [virgule] parm2[deux-points]valeur [accolade_fermante][saut de ligne]

Une fois le YML sauvegardé, Symfony va nous permettre de générer les requêtes SQL nécessaires et de les insérer en base. Les commandes à passer sous l'invite de commande sont donc (pour la version 1.1 de Symfony) :
symfony propel :build-sql
symfony propel :insert-sql

Notez une fois de plus que l'on doit se placer dans le répertoire www/test_ikule avant de lancer les commandes !
Voilà, les tables sont créées, on reprend très prochainement -2.png" alt="Tutoriel Symfony : création d'une base de données via YML" target="_blank" title="Billet Écripro Valid" />

Les dernieres videos de buzz

Voir les dernieres videos