Bonjour,
J'ai conçu et créé une base de donnée en MySQL (moteur: InnoDB) sur mon serveur de développement. Au lieu de me taper à la main l'écriture du fichier schema.yml, j'ai décidé de l'importer directement à partir de la base :
Ça a l'air de fonctionner : le fichier schema.yml est rempli de noms de tables, de champs et de relations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ php symfony doctrine:build-schema
Mais deux choses me semblent louches :
Premièrement, j'ai l'impression que les relations du type onDelete: cascade n'apparaissent pas.
Exemple :
J'ai une table Offre dont chaque entrée dépend nécessairement d'un Produit (entrée de la table du même nom). Si je supprime le Produit A, toutes les offres associées à A doivent disparaître. Ce qui se traduit par une contrainte en MySQL.
Voici ce que j'ai dans schema.yml :
Au lieu de type: one, je m'attendais plutôt à trouver quelque chose du genre onDelete: CASCADE, comme on peut le voir ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11Offer: connection: doctrine tableName: offer columns: id: #... relations: Product: local: product_id foreign: id type: one
Est-ce équivalent ?
Deuxième interrogation :
Dans ma table Client, le champ email doit être unique. Ce qui donne, côté MySQL : un index name_UNIQUE sur la colonne name, cet index étant configuré pour être unique.
Ce que je ne comprends pas, c'est que dans schema.yml, le mot-clé "unique" n'apparaît pas du tout. Et voici la seule occurrence de "email" :
Je ne vois pas comment le modèle symfony pourra comprendre que le champ email de la table Client doit être unique. Vous avez une explication ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 email: type: string(255) fixed: false unsigned: false primary: false notnull: false autoincrement: false
Merci beaucoup pour votre lecture.
Partager