[Relation]Problème mapping OneToMany
Bonjour tout le monde,
Je suis en train d'essayer de migrer un projet en utilisant Doctrine2, mais j'ai quelques problèmes pour la gestion des relations OneToMany et ManyToOne.
Le problème, c'est que j'ai une base de la sorte :
Citation:
Table : episodes_series
id
sid #Serie ID
num #Numéro de l'épisode
Table : episodes_titre
eid #Episode id
lang
titre
Mais mon problème, c'est que pour mon entité Episode quel types de relation dois-je utiliser, car je n'arrive pas à trop comprendre car je penses utiliser la relation OneToMany mais ne je suis pas sur que ça soit celle qui soit la plus adapter à mon cas (plusieurs titres possible pour un même épisode).
Car pour le moment j'était parti sur une relation OneToMany (1-N) mais je penses avoir fait des erreurs au niveau des paramètres. En effet, que dois-je mettre dans le champs mappedBy car je ne vois pas trop, là j'ai mis id mais je penses pas que ça soit la bonne solution.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
/**
* @ORM\Entity
* @ORM\Table(name="public.episodes_series")
*/
class Episode
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="integer")
*/
protected $num;
/**
* @ORM\OneToMany(targetEntity="EpisodeTitle",mappedBy="eid")
* @ORM\JoinTable(name="episodes_titles",
* joinColumns={@ORM\JoinColumn(name="eid", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="id", referencedColumnName="eid")})
*/
protected $titre;
}
/**
* @ORM\Entity
* @ORM\Table(name="public.episodes_titre")
*/
class EpisodeTitle
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $titre; |
En effet, Doctrine génère les requêtes suivantes :
Code:
1 2 3
|
SELECT t0.id AS id1, t0.num AS num2 FROM public.episodes_series t0 WHERE t0.id = ?
SELECT t0.id AS id1, t0.titre AS titre2, t0.lang AS lang3, t0.eid_id AS eid_id4 FROM public.episodes_titre t0 WHERE t0.eid_id = ? |
Hors mon problème c'est d'où sort ce champs eid_id, pourquoi rajoute-t-il _id ?
Merci par avance et bonne soirée :)