|
publié le 27/08/07 par Jonathan Démoutiez
Le framework nous offre une souplesse d’utilisation et d’accès à la base de données qui vous fera gagner énormément de temps ! La base de données va être décrite dans un fichier de configuration : config/schema.yml. Nous allons d’abord différencier deux points, soit votre modèle de données : - est déjà construit et nous ne pouvons pas le modifier : nous perdrons quelques atouts de Symfony;
- n’est pas encore définit ou nous pouvons la re-modeler.
Noms de champs spécifiques id : Si un champ d’une table se nomme id alors il sera automatiquement considéré comme la clé primaire de la table. created_at & updated_at : Vous pouvez appeler un champ de type datetime`created_at ou updated_at pour que Symfony gère ces données automatiquement lors de l’insertion ou de la mise à jour de données. Système relationnel Symfony va nous permettre de gérer très simplement le système relationnel de notre modèle de données. - Automatiquement si nous appelons nos champs comme il faut :
Si un champs se nomme NOM_TABLE_EXISTANTE_id alors il sera automatiquement considéré comme la clé étrangère de la table NOM_TABLE_EXISTANTE. Ainsi le système relationne sera repris automatiquement dans notre système objet (ORM). Ecriture du schéma - Ma base n’est pas encore créée : Nous allons éditer le fichier `config/schema.yml` comme suit:
propel: nom_table: id: created_at: titre: varchar(255) texte: longvarchar
nom_table_2: id: created_at: updated_at: nom_table_id: texte: varchar(255) description: longvarchar chiffre: int Une fois que nous avons décrit notre schéma SQL, nous allons pouvoir générer automatiquement les tables en base et la génération des objets (cf: le prochain article l’ORM)) : >symfony propel-build-all Si notre base est déjà écrite nous pouvons générer ce fichier automatiquement via la commande : >symfony propel-build-schema # Merci Nico :) Nous pouvons ensuite y effectuer quelques modifications pour y préciser notre système relationnel par exemple : propel: nom_table: id: created_at: titre:varchar(255) texte: longvarchar
nom_table_2: id: created_at: updated_at: texte: varchar(255) description: longvarchar chiffre: int _foreignKeys: nom_table: _attributes: { onDelete: cascade } references: - {local: nom_cle_etrangere, foreign: id } Ici nous n’allons pas créer les tables en base puisqu’elles existent déjà, nous allons donc juste générer les objets via l’ORM : >symfony propel-build-model
|