Doctrine 2 et plusieurs-à-Plusieurs lien de la table avec un champ supplémentaire
(Désolé pour mon incohérente question: j'ai essayé de répondre à certaines questions que j'ai écrit ce post, mais ici il est:)
Je suis en train de créer un modèle de base de données avec plusieurs-à-plusieurs relations à l'intérieur d'une table de lien, mais qui a également une valeur par lien, dans ce cas, une gestion de stock de la table. (ceci est un exemple de base pour plus de problèmes que je vais avoir, mais j'ai pensé que je venais tout juste de le tester avant, je voudrais continuer).
J'ai utilisé exportmwb pour générer les deux Entités de Stocker et de Produit pour cet exemple simple, les deux sont affichées ci-dessous.
Cependant, le problème maintenant est que je ne peux pas comprendre comment accéder au stock.le montant de la valeur (signé int, comme elle peut être négative) à l'aide de la Doctrine. Aussi, lorsque j'essaie de créer les tables à l'aide de l'orm doctrine:schema-outil:créer la fonction
Cela a donné seulement deux Entités et trois tables, une table de lien sans valeurs et les deux tableaux de données, comme plusieurs-à-plusieurs relations ne sont pas des entités eux-mêmes, donc je ne peux avoir Produit et de les Stocker en tant qu'entité.
Donc, logiquement, j'ai tenté de changer mon modèle de base de données pour avoir des actions comme une table séparée avec les relations de stocker et de produit. J'ai également réécrit le fieldnames juste pour être en mesure d'exclure la possibilité que comme une source de problème:
Alors ce que j'ai constaté, c'est que je ne l'ai toujours pas obtenir un Stock entité... et la base de données elle-même n'avait pas de "montant" -champ.
J'ai vraiment besoin d'être capable de se lier à ces magasins et produits dans un tableau des stocks (entre autres choses)... donc, juste l'ajout de la bourse sur le produit lui-même n'est pas une option.
root@hdev:/var/www/test/library# php doctrine.php orm:info
Found 2 mapped entities:
[OK] Entity\Product
[OK] Entity\Store
Et quand j'ai créer la base de données, cela ne me donne pas le droit de champs dans le tableau des stocks:
Donc, la recherche de certaines choses ici, j'ai découvert que plusieurs-à-plusieurs connexions ne sont pas des entités et ne peuvent donc avoir des valeurs. J'ai donc essayé de changer à une table séparée avec les relations aux autres, mais il ne fonctionne toujours pas.
Ce que je fais mal ici?
- Ok, j'ai trouvé un couple de mentions indiquant qu'il n'est pas possible d'avoir plusieurs-à-plusieurs connexions à l'aide de la Doctrine, avec des commentaires en conseillant d'éviter ces relations.. mais que faire si vous êtes vraiment coincé avec une situation comme celle que j'ai décrit dans ma question initiale? J'ai une base de données complète, compatible avec Magento, qui a complètement s'appuie sur plusieurs-à-plusieurs liens. Donc, fondamentalement, je me dit "ORM Doctrine ne peut pas gérer plusieurs-à-plusieurs, ne l'utilisez pas" ??
- Voir aussi Doctrine2: la Meilleure façon de gérer plusieurs-à-plusieurs avec des colonnes supplémentaires dans la table de référence
- Serait de vous donner des +100 si je le pouvais, pour les efforts que vous avez faits pour expliquer exactement ce que je me demandais à propos de telle façon agréable 🙂
Vous devez vous connecter pour publier un commentaire.
Un plusieurs-À-Plusieurs association avec d'autres valeurs n'est pas un plusieurs-À-Plusieurs, mais c'est en fait une nouvelle entité, puisqu'il a maintenant un identificateur (les deux relations avec les entités connectées) et de valeurs.
C'est aussi la raison pour laquelle plusieurs-À-Plusieurs associations sont si rares: vous avez tendance à stocker d'autres propriétés, comme
sorting
,amount
, etc.Ce que vous avez probablement besoin est quelque chose comme la suite (j'ai fait les deux relations bidirectionnelles, envisager de faire au moins l'un d'entre eux, uni-directionnel):
Produit:
Magasin:
Stock:
Doctrine gère plusieurs-à-plusieurs relations de l'amende juste.
Le problème que vous rencontrez est que vous n'avez pas besoin d'un simple ManyToMany association, parce que les associations ne peuvent pas avoir de "extra" de données.
Votre milieu (stock) tableau, car il contient plus de product_id et store_id, a besoin de sa propre entité de modèle de données supplémentaires.
Si vous voulez vraiment trois classes de l'entité:
et de deux associations:
php app/console doctrine:mapping:import AppBundle yml
pour importer le schéma de la base de données. Je tiens à générer cette extra de mappage de fichier yaml. Quelqu'un aurait-il une Idée ?:(