Jonathan Démoutiez
Vide
Coin_hg Vide Coin_hd
 

Base de données

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
  • Ma base est déjà créée

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

 
Coin_bg Vide Coin_bd
Vide
Jonathan Démoutiez
©2010 Jonathan Démoutiez Valid XHTML 1.0 Transitional