2010-05-16 9 views
-1

Je dois modifier les clés primaires dans plusieurs tables. Par défaut, symfony masque les clés primaires dans les formulaires Nouveau/Modifier. Par exemple, ne peut pas éditer la table 'Tags' avec seulement le champ 'tag' qui est PK. L'ajout d'un ID entier à cette table n'est pas exactement une bonne conception db.Modifier les clés primaires dans l'administrateur généré automatiquement par Symfony

Merci d'avance pour votre aide.

+0

"L'ajout d'un ID entier à cette table n'est pas exactement une bonne conception db." - étant donné que vous êtes maintenant confronté à l'énigme de l'édition de la valeur de clé primaire (et d'avoir à mettre en cascade ces mises à jour à travers tous les enregistrements qui font référence à cette valeur), je dirais que c'est exactement le contraire. –

Répondre

0

Comme indiqué par @Raise, la solution simple à cela est de créer un champ actualisable « ID » à travailler à côté du champ clé primaire que vous pouvez laisser seul bien.

+0

Je connais cette solution et je l'utilise. Bien faire la conception DB, ce n'est pas toujours la meilleure approche. – olegsv

+1

C'est la même chose que d'utiliser un code YouTube. L'utilisation d'un code signifie que l'ID n'est pas exposé aux utilisateurs. –

1

Comme vous le dites, par défaut, symfony cache les clés primaires. En tant que tel, vous devrez modifier le fichier generator.yml pour inclure les champs spécifiques dont vous avez besoin, et éventuellement forcer le type des champs à 'text' afin qu'ils ne soient pas rendus 'simples'.

Si cela ne fonctionne pas, vous pouvez toujours étendre generator.yml pour inclure des pseudo-champs pour ces champs de clé primaire.

En aparté, les clés primaires auto-incrément entier sont très utiles, et the general feeling est contre vous :)

+0

Même si j'ouvre la clé primaire dans la classe de formulaire, symfony s'appuie sur la clé primaire comme ancre de modification. Il me semble qu'il n'y a pas de moyen simple de l'appliquer. Et non, avoir deux champs uniques distincts n'est pas toujours une bonne idée lors de la conception d'une grande base de données. – olegsv

Questions connexes