Salut à tous,
j'ai un petit problème concernant la génération de mon formType sur une relation manyTomany avec attributs.
Je vous explique. J'ai deux tables :
1) Table personne avec les infos habituelles
2) Table pays
Ensuite j'ai une relation "visiter", avec les attributs date1 et date2. Tout cela gère des séjours de vacanciers.
Du coup je me crée les relations suivantes :
Clients----(OneToMany)----visiter-----(ManyToOne)-----pays
Ce qui me donne les entités suivantes (avec leur relations) :
l'entité Client :
l'entité Visiter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Client { /** * @var integer $id * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string $nom * * @ORM\Column(name="nom", type="string", length=25) */ private $nom; /** * @var string $prenom * * @ORM\Column(name="prenom", type="string", length=25) */ private $prenom; //.../.... /** * @ORM\OneToMany(targetEntity="Visiter", mappedBy="client") * @ORM\JoinColumn(nullable=true) */ private $visites; public function __construct() { $this->visites = new ArrayCollection(); } }
l'entité pays:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class Visiter { /** * @ORM\Id * @ORM\ManyToOne(targetEntity="Client", inversedBy="parcours") * @ORM\JoinColumn(name="client_id", referencedColumnName="id", onDelete="cascade") */ private $client; /** * @ORM\Id * @ORM\ManyToOne(targetEntity="Pays") */ private $pays; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class Pays { /** * @var integer $id * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string $nom * * @ORM\Column(name="nom", type="string", length=30) */ private $nom; }
Jusqu'ici tout va bien.
me crée mes tables avec client_id et pays_id en clefs primaires (ensembles).
Code : Sélectionner tout - Visualiser dans une fenêtre à part php app/console doctrine/schema/generate
Le problème vient du fait que je voudrais générer le VisiteType pour l'imbriquer dans le formulaire Client. Pour ce qui est de l'imbrication maintenant je sais faire.
Néanmoins, je lance la génération via doctrine :
Et j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part php app/console doctrine:generate:form ReservBundle:Visiter
JE ne peux modifier ma table "visiter" puisque les deux clefs primaires sont issues de la relation avec les tables clients et pays.
Code : Sélectionner tout - Visualiser dans une fenêtre à part The form generator does not support entity classes with multiple primary keys
Faut -t-il que je casse ces deux clefs primaires et me crée une clef visite_id comme je l'ai vu sur le net? Mais dans ce cas là est-ce que l'on ne contrevient pas à la bonne logique des BDD?
Si vous avez une ou plusieurs idées. MErci d'avance
Partager