Disons que j'ai un système avec des produits qui peuvent avoir diverses options de décoration (ou d'impression).Propriété 'name' dans Doctrine 2
La plupart des produits auront une gamme similaire de noms d'options d'impression, mais certains peuvent être uniques pour un seul produit.
Par exemple, je pourrais avoir un plafond qui pourrait avoir trois options de décoration différentes:
- Unbranded
- une impression couleur
- broderie
Mon but est d'essayer de minimiser la décoration les noms d'options créés par les utilisateurs admin afin qu'ils soient toujours les mêmes. C'EST À DIRE. Je ne veux pas que certaines options de décoration soient appelées "Impression 1 Couleur" et une autre appelée "Impression Une Couleur". Donc, mon plan est dans l'interface utilisateur est d'avoir une liste déroulante des noms des options de décoration existantes, mais aussi leur donner la possibilité d'en ajouter un nouveau (pour les cas de bord). Cependant, chaque option de décoration comporte diverses autres données, telles que le coût d'installation, le temps de production, etc., qui varie en fonction du produit. Par exemple, Hat1 et Hat2 peuvent avoir une option de décoration de broderie, mais le coût d'installation de Hat1 est de 49 $ et celui de Hat2 est seulement de 35 $.
Donc, mes questions sont, quelle est la meilleure façon de structurer mes entités? Dois-je avoir trois entités: Product, DecorationOption et DecorationOptionName? Ou seulement deux entités: Produit et DécorationOption?
S'il vous plaît voir mes exemples de code pour mieux comprendre:
Parfait! Pensez-vous que cela serait nécessaire s'il n'y avait pas d'informations supplémentaires sur la table de jonction? Par exemple, un produit a plusieurs images qui seront toutes étiquetées (Front, Back, Top, etc.) mais il y a des produits qui auront des étiquettes edge-case, mais je veux garder un nom aussi cohérent que possible. Jetez un oeil ici: http://pastie.org/1268445 – Cobby
Eh bien, je suppose que ImagePosition n'est pas la table de jointure ... mais vous obtenez l'idée/question que j'espère. – Cobby
C'est difficile à dire pour chaque exemple.Fondamentalement, si vous avez besoin d'un objet pour exécuter la logique métier, vous devriez probablement avoir une entité pour cela. Si vous disposez d'un ensemble complexe de logique prenant en charge ce système d'étiquettes, créez une entité. Sinon, vous êtes probablement d'accord avec les deux tables. En outre, Doctrine possède une association @ManyToMany qui utilise une table de jointure sans avoir besoin de créer une troisième entité. –