Bonjour,
Je m'arrache un peu les cheveux sur une problème avec les entités. J’espère que quelqu'un pourra m'aider, j ai essayé une multitude de combinaison et rien ne fonctionne.
J'ai migré une base de données mysql en entités dans symfony. Cette base de données avait un système de clé primaire où la nomenclature n'était pas avec des "id" comme l'attends symfony.
J'ai 2 tables utilisateur et vehicule. Un utilisateur peut avoir qu'un vehicule et un vehicule peut avoir plusieurs utilisateurs.
Dans la table Utilisateur j'ai num_util qui est la clé primaire
Dans la table Vehicule j ai num_vehicule qui est la clé primaire et num_util qui est la clé étrangere
Entité utilisateur :
Entité vehicule :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 <?php namespace AKH\RootBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Utilisateur * * @ORM\Table(name="utilisateur", indexes={@ORM\Index(name="fnum_client", columns={"num_client"}), @ORM\Index(name="fniveau_acces", columns={"niveau_acces"}), @ORM\Index(name="fsuperuser", columns={"superuser"}), @ORM\Index(name="fnom", columns={"nom"}), @ORM\Index(name="fprenom", columns={"prenom"}), @ORM\Index(name="fnum_part", columns={"num_part"})}) * @ORM\Entity */ class Utilisateur { /** * @var integer * * @ORM\Column(name="num_util", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $numutil; /** * Get numUtil * * @return integer */ public function getNumUtil() { return $this->numutil; } /** * @ORM\ManyToOne(targetEntity="AKH\RootBundle\Entity\Vehicule", inversedBy="utilisateurs") * @ORM\JoinColumn(name="num_util", referencedColumnName="num_util") */ private $vehicule; /** * @return mixed */ public function getVehicule() { return $this->vehicule; } /** * @param mixed $vehicule */ public function setVehicule(Vehicule $vehicule = null) { $this->vehicule = $vehicule; } }
Et ca ne marche pas j'ai une erreur :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 <?php namespace AKH\RootBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Vehicule * * @ORM\Table(name="vehicule") * @ORM\Entity */ class Vehicule { /** * @var integer * * @ORM\Column(name="num_vehicule", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $numVehicule; /** * @ORM\OneToMany(targetEntity="AKH\RootBundle\Entity\Utilisateur", mappedBy="vehicule") * @ORM\JoinColumn(name="num_util", referencedColumnName="num_util") */ private $utilisateurs; /** * @return mixed */ public function getUtilisateurs() { return $this->utilisateurs; } /** * @param mixed $utilisateurs */ public function setUtilisateurs($utilisateurs) { $this->utilisateurs = $utilisateurs; } /** * @var integer * * @ORM\Column(name="num_util", type="integer") */ private $numUtil; /** * @return int */ public function getNumUtil() { return $this->numUtil; }
Missing value for primary key numVehicule on AKH\RootBundle\Entity\Vehicule
Class Mapping errors
AKH\RootBundle\Entity\Utilisateur
The referenced column name 'num_util' has to be a primary key column on the target entity class 'AKH\RootBundle\Entity\Vehicule'.
Partager