Doctrine : importer relations dans schema.yml à partir d'une base existante
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 :
Code:
$ php symfony doctrine:build-schema
Ça a l'air de fonctionner : le fichier schema.yml est rempli de noms de tables, de champs et de relations.
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 :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Offer:
connection: doctrine
tableName: offer
columns:
id:
#...
relations:
Product:
local: product_id
foreign: id
type: one |
Au lieu de type: one, je m'attendais plutôt à trouver quelque chose du genre onDelete: CASCADE, comme on peut le voir ici.
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" :
Code:
1 2 3 4 5 6 7
| email:
type: string(255)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false |
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 ?
Merci beaucoup pour votre lecture.