2017-10-15 14 views
-3

J'ai deux tables, Événement et Produit, un événement a plusieurs produits et un produit peut être dans plusieurs événements. Ici, je pense que c'est une relation OneToManyUnidirectionnel. Sous la forme de création d'événement, je veux avoir la liste des produits disponibles dans la base de données et ajouter quelques produits à l'événement (collection de produits).Symfony 2.8: une à plusieurs relation

Quelle est la meilleure façon de faire cela?


  1. Mettre en œuvre le OneToMany ou
  2. Aller dans la façon de mettre en œuvre ManyToMany et créer une troisième table EventProducts

Quelqu'un peut me aider à choisir la meilleure façon et la façon de mettre en œuvre il?

Répondre

0

1) Mettre en oeuvre une Tomany:

Dans ce cas, vous pouvez obtenir les produits liste événement: event- $> getProducts

Mais quand vous avez besoin d'accéder à l'événement de l'entité produit par $ product-> GetEvent() !!! !!! cela est impossible parce que la relation est unidirectionnelle

2) Allez dans la façon de mettre en œuvre ManyToMany et créer une troisième table EventProducts:

La solution est celle-ci et de créer la troisième entité EventProduct

Hope this peut aide

0

Je pense aller et générer EventProduct est une meilleure option afin de l'événement fera OneToMany relation avec EventProduct et produit sera également une relation avec EventProduct.So EventPeoduct rejoindre l'événement et produit

0

il est préférable d'utiliser ManyToMany avec ORM\JoinTable(name="table_name")

class Product { 

/** 
* @ORM\ManyToMany(targetEntity="Event") 
* @ORM\JoinTable(name="products_events") 
*/ 
private $events; 

..... 
0

Personnellement je préfère ajouter une troisième entité au lieu de faire beaucoup de choses, c'est plus facile à maintenir surtout quand un jour vous devrez ajouter d'autres champs comme (ordre, date de création, etc)