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 :

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é 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
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;
 
}
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
php app/console doctrine/schema/generate
me crée mes tables avec client_id et pays_id en clefs primaires (ensembles).


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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
php app/console doctrine:generate:form ReservBundle:Visiter
Et j'ai l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
The form generator does not support entity classes with multiple primary keys
JE ne peux modifier ma table "visiter" puisque les deux clefs primaires sont issues de la relation avec les tables clients et pays.

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