Problème affichage données

Symfony 3

a marqué ce sujet comme résolu.

[…] en me basant sur ce site ou ici, c’est exactement mon problème. J’ai utilisé JOINED vu que j’ai un héritage multi-tables.

Donc, j’avoue que je suis un peu perdu là. :(

Charvalos

Au temps pour moi, je ne savais pas que c’était possible, tu m’as fait découvrir quelque chose de bien pratique, là  :)

Du coup, en ayant supprimé tes "jointures d’héritage" explicites, tu as pu t’en sortir ?

EDIT : J’ai modifié les codes de mon message précédent en ne mettant que les attributs.

Charvalos

Merci. C’était moins nécessaire que d’éviter du scroll, mais j’apprécie aussi  ^^

+0 -0

Donc, tu veux dire, supprimer tout ce qui concerne les

1
2
3
4
5
6
<?php
* @ORM\ManyToOne(targetEntity="MPCleanCoreBundle\Entity\Marchandises")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="fk_marc", referencedColumnName="id_marc")
     * })
?>

C’est ça ?

+0 -0

Bon, j’ai toujours la même erreur, même après avoir supprimer les différentes parties.

Duplicate definition of column ’id_marc’ on entity ’MPCleanCoreBundle\Entity\Produit’ in a field or discriminator column mapping.

Marchandises.php

 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
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Marchandises
 *
 * @ORM\Table(name="marchandises", uniqueConstraints={@ORM\UniqueConstraint(name="ind_id_marc", columns={"id_marc"})})
 * @ORM\Entity
 * @ORMInheritance("JOINED")
 * @ORMDiscriminatorColumn(name = "type", type = "string")
 * @ORMDiscriminatorMap({"prestation" = "Prestation", "produit" = "Produit"})
 */
abstract class Marchandises
{
    /**
     * @var string
     *
     * @ORM\Column(name="prix_marc", type="decimal", precision=10, scale=0, nullable=false)
     */
    private $prixMarc;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_marc", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idMarc;
?>

Produit.php

 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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Produit
 *
 * @ORM\Table(name="produit", uniqueConstraints={indexes={@ORM\Index(name="produit_marchandise", columns={"fk_marc"}), @ORM\Index(name="ind_fk_media", columns={"fk_med"}), @ORM\Index(name="ind_fk_cat", columns={"fk_cat"}), @ORM\Index(name="ind_fk_type", columns={"fk_type"}), @ORM\Index(name="ind_fk_marq", columns={"fk_marq"})})
 * @ORM\Entity
 */
class Produit extends Marchandises
{
    /**
     * @var integer
     *
     * @ORM\Column(name="fk_cat", type="integer", nullable=false)
     */
    private $fkCat;

    /**
     * @var integer
     *
     * @ORM\Column(name="fk_type", type="integer", nullable=false)
     */
    private $fkType;

    /**
     * @var integer
     *
     * @ORM\Column(name="fk_marq", type="integer", nullable=false)
     */
    private $fkMarq;

    /**
     * @var string
     *
     * @ORM\Column(name="libelle_prod", type="text", length=255, nullable=false)
     */
    private $libelleProd;

    /**
     * @var string
     *
     * @ORM\Column(name="description_prod", type="text", length=255, nullable=false)
     */
    private $descriptionProd;

    /**
     * @var integer
     *
     * @ORM\Column(name="qte_prod", type="integer", nullable=false)
     */
    private $qteProd;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_prod", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idProd;

    /**
     * @var \MPCleanCoreBundle\Entity\Media
     *
     */
    private $fkMed;

    /**
     * @var \MPCleanCoreBundle\Entity\Produit
     *
     */
    private $fkMarc;
?>

Est-ce que cela peut venir du fait que j’ai deux clés primaires, une dans Marchandises et une autre dans Produit ? Ou des contraintes d’index ?

+0 -0

C’est moi ou tu as juste changé les relations Doctrine par des propriétés dont tu ne stockes que l’ID ? C’est pas non-plus nécessaire, à mon avis  ;)

Tu travailles avec quel moteur de bases de données ? Parce que je ne comprends pas pourquoi tu spécifie un index d’unicité sur id_marc alors que c’est la clé primaire qui, par définition, est unique (si une clé primaire pouvait ne pas l’être, à quoi servirait-elle ?), et c’est peut-être là le souci.

Edit

Sinon, je te conseillerais de nommer les propriétés de tes objets sans spécifier si ce sont des clés étrangères ou des IDs quand il retournent des objets. fkMark qui contient un objet Produit, fkMed un Media… Comme les méthodes getFkMed et getFkMark ne retournent pas les clés étrangères elle-mêmes, je ne sais pas toi, mais moi ça m’ennuierait.

+0 -0

J’utilise MySQL (avec WampServer) et je ne pas souvenir d’avoir mis un index unique sur l’ID. Mais avec MySQL, des fois, je m’attends à tout. Après, j’ai créer les Entitées avec Doctrine.

En gros, tu me dis de supprimer également tout ce qui concerne les ORM/xxx ?

EDIT : Normalement, un index est crée avec une clef primaire et je l’ai juste renommé (mais pas avec le bon nom ^^)

+0 -0

En gros, tu me dis de supprimer également tout ce qui concerne les ORM/xxx ?

Charvalos

Uniquement ceux que tu avais faits et qui concernaient les relations entre Produit ou Prestation et Marchandises, parce que cette relation est "définie" par le mapping d’héritage, aucun besoin de la mettre comme une relation "courante" avec des @ORM\OneToMany/@ORM\ManyToOne. Et du coup, les propriétés qui allaient avec peuvent aussi être supprimées.

En gros, tu n’as absolument plus aucun besoin de référencer toi-même un objet Marchandise depuis un Produit ou un Prestation (et inversément), Doctrine s’en sort. Et même peut-être mieux sans ça, d’ailleurs.

+0 -0

En tout cas pas que tu aies à le spécifier toi. Et uniquement entre ces trois classes. Si tu avais des relations depuis un de ces trois objets vers d’autres, tu pouvais les laisser.

Tu arrives à nous montrer à nouveau tes mappings une fois les modifications faites ?
Et est-ce que tu as toujours l’erreur ?

+0 -0

Désolé du retard.

Voici ce que me donne ma classe Produit :

 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
62
63
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Produit
 *
 * @ORM\Table(name="produit", uniqueConstraints={indexes={@ORM\Index(name="produit_marchandise", columns={"fk_marc"}), @ORM\Index(name="ind_fk_media", columns={"fk_med"}), @ORM\Index(name="ind_fk_cat", columns={"fk_cat"}), @ORM\Index(name="ind_fk_type", columns={"fk_type"}), @ORM\Index(name="ind_fk_marq", columns={"fk_marq"})})
 * @ORM\Entity
 */
class Produit extends Marchandises
{
    /**
     * @var integer
     *
     * @ORM\Column(name="fk_cat", type="integer", nullable=false)
     */
    private $fkCat;

    /**
     * @var integer
     *
     * @ORM\Column(name="fk_type", type="integer", nullable=false)
     */
    private $fkType;

    /**
     * @var string
     *
     * @ORM\Column(name="libelle_prod", type="text", length=255, nullable=false)
     */
    private $libelleProd;

    /**
     * @var string
     *
     * @ORM\Column(name="description_prod", type="text", length=255, nullable=false)
     */
    private $descriptionProd;

    /**
     * @var integer
     *
     * @ORM\Column(name="qte_prod", type="integer", nullable=false)
     */
    private $qteProd;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_prod", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idProd;

    /**
     * @var \MPCleanCoreBundle\Entity\Media
     *
     */
    private $fkMed;

Je n’ai plus aucune données reliées à Marchandise (j’ai supprimé les trucs fkMarc). Mais j’ai toujours cette erreur.

Elle n’a rien de vraiment spécial si ce n’est l’indication d’héritage :

 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
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Marchandises
 *
 * @ORM\Table(name="marchandises", uniqueConstraints={@ORM\UniqueConstraint(name="ind_id_marc", columns={"id_marc"})})
 * @ORM\Entity
 * @ORMInheritance("JOINED")
 * @ORMDiscriminatorColumn(name = "type", type = "string")
 * @ORMDiscriminatorMap({"prestation" = "Prestation", "produit" = "Produit"})
 */
abstract class Marchandises
{
    /**
     * @var string
     *
     * @ORM\Column(name="prix_marc", type="decimal", precision=10, scale=0, nullable=false)
     */
    private $prixMarc;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_marc", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idMarc;

Idem, toujours cette erreur :

Duplicate definition of column ’id_marc’ on entity ’MPCleanCoreBundle\Entity\Produit’ in a field or discriminator column mapping.

Est-ce que cela pourrait venir de cette ligne ?

1
2
3
<?php

* @ORM\Table(name="marchandises", uniqueConstraints={@ORM\UniqueConstraint(name="ind_id_marc", columns={"id_marc"})})

Justement, je croyais t’avoir déjà proposé de l’enlever pour tester, et j’avais cru comprendre que ça ne résolvait rien.

[…] Parce que je ne comprends pas pourquoi tu spécifie un index d’unicité sur id_marc alors que c’est la clé primaire qui, par définition, est unique (si une clé primaire pouvait ne pas l’être, à quoi servirait-elle ?), et c’est peut-être là le souci.

Ymox
+0 -0

J’ai supprimé tous les attributs de mon entité Produit (il ne lui reste que les getters/setters). Dans Marchandise, j’ai toujours ceci :

 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
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Marchandises
 *
 * @ORM\Table(name="marchandises")
 * @ORM\Entity
 * @ORMInheritance("JOINED")
 * @ORMDiscriminatorColumn(name = "type", type = "string")
 * @ORMDiscriminatorMap({"prestation" = "Prestation", "produit" = "Produit"})
 */
abstract class Marchandises
{
    /**
     * @var string
     *
     * @ORM\Column(name="prix_marc", type="decimal", precision=10, scale=0, nullable=false)
     */
    private $prixMarc;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_marc", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idMarc;

Résultat, j’ai toujours cette erreur :

Duplicate definition of column ’id_marc’ on entity ’MPCleanCoreBundle\Entity\Produit’ in a field or discriminator column mapping.

J’ai même enlevé cette ligne dans Produit :

@ORM\Table(name="produit", uniqueConstraints={indexes={@ORM\Index(name="produit_marchandise", columns={"fk_marc"}), @ORM\Index(name="ind_fk_media", columns={"fk_med"}), @ORM\Index(name="ind_fk_cat", columns={"fk_cat"}), @ORM\Index(name="ind_fk_type", columns={"fk_type"}), @ORM\Index(name="ind_fk_marq", columns={"fk_marq"})})

mais l’erreur reste la même.

J’aurais dû peut-être y penser plus tôt, mais est-ce que tu ne serais pas par hasard dans ce cas ?

Ymox

Je ne pense pas.

Charvalos

Il faut vérifier correctement maintenant, parce que pour le coup, il y a soit des mappings ailleurs que tes annotations, soit un cache d’annotations qui embête — et pour autant que ce ne soit pas le cache naturel tout court…

Et au final, si ces histoires de cache ou d’autres mappings n’amènent rien, j’aimerais bien jeter un œil à l’entier de tes trois entités. Si tu pouvais en fournir le code complet – dans les blocs [[secret]], évidemment  ;) —, je vais voir quand j’aurai du temps.

+0 -0

J’ai fait la commande

1
php bin/console doctrine:cache:clear-metada

Clearing ALL Metadata cache entries Successfully deleted cache entries.

Mais l’erreur est toujours là.

J’y pense mais dans mon dossier, j’ai des fichiers qui sont nommés de cette façon : Produit.php~

Est-ce que cela pourrait venir de là ?

Sinon, voici le code complet de mes trois entités :

Marchandise

 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
62
63
64
65
66
67
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Marchandises
 *
 * @ORM\Table(name="marchandises")
 * @ORM\Entity
 * @ORMInheritance("JOINED")
 * @ORMDiscriminatorColumn(name = "type", type = "string")
 * @ORMDiscriminatorMap({"prestation" = "Prestation", "produit" = "Produit"})
 */
abstract class Marchandises
{
    /**
     * @var string
     *
     * @ORM\Column(name="prix_marc", type="decimal", precision=10, scale=0, nullable=false)
     */
    private $prixMarc;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_marc", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idMarc;

    /**
     * Set prixMarc
     *
     * @param string $prixMarc
     *
     * @return Marchandises
     */
    public function setPrixMarc($prixMarc)
    {
        $this->prixMarc = $prixMarc;

        return $this;
    }

    /**
     * Get prixMarc
     *
     * @return string
     */
    public function getPrixMarc()
    {
        return $this->prixMarc;
    }

    /**
     * Get idMarc
     *
     * @return integer
     */
    public function getIdMarc()
    {
        return $this->idMarc;
    }
}

Produit

  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
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Produit
 *
 * @ORM\Table(name="produit", uniqueConstraints={indexes={@ORM\Index(name="produit_marchandise", columns={"fk_marc"}), @ORM\Index(name="ind_fk_media", columns={"fk_med"}), @ORM\Index(name="ind_fk_cat", columns={"fk_cat"}), @ORM\Index(name="ind_fk_type", columns={"fk_type"}), @ORM\Index(name="ind_fk_marq", columns={"fk_marq"})})
 * @ORM\Entity
 */
class Produit extends Marchandises
{
    /**
     * @var integer
     *
     * @ORM\Column(name="fk_cat", type="integer", nullable=false)
     */
    private $fkCat;

    /**
     * @var integer
     *
     * @ORM\Column(name="fk_type", type="integer", nullable=false)
     */
    private $fkType;

    /**
     * @var string
     *
     * @ORM\Column(name="libelle_prod", type="text", length=255, nullable=false)
     */
    private $libelleProd;

    /**
     * @var string
     *
     * @ORM\Column(name="description_prod", type="text", length=255, nullable=false)
     */
    private $descriptionProd;

    /**
     * @var integer
     *
     * @ORM\Column(name="qte_prod", type="integer", nullable=false)
     */
    private $qteProd;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_prod", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idProd;

    /**
     * @var \MPCleanCoreBundle\Entity\Media
     *
     */
    private $fkMed;


    /**
     * Set fkCat
     *
     * @param integer $fkCat
     *
     * @return Produit
     */
    public function setFkCat($fkCat)
    {
        $this->fkCat = $fkCat;

        return $this;
    }

    /**
     * Get fkCat
     *
     * @return integer
     */
    public function getFkCat()
    {
        return $this->fkCat;
    }

    /**
     * Set fkType
     *
     * @param integer $fkType
     *
     * @return Produit
     */
    public function setFkType($fkType)
    {
        $this->fkType = $fkType;

        return $this;
    }

    /**
     * Get fkType
     *
     * @return integer
     */
    public function getFkType()
    {
        return $this->fkType;
    }

    /**
     * Set fkMarq
     *
     * @param integer $fkMarq
     *
     * @return Produit
     */
    public function setFkMarq($fkMarq)
    {
        $this->fkMarq = $fkMarq;

        return $this;
    }

    /**
     * Get fkMarq
     *
     * @return integer
     */
    public function getFkMarq()
    {
        return $this->fkMarq;
    }

    /**
     * Set libelleProd
     *
     * @param string $libelleProd
     *
     * @return Produit
     */
    public function setLibelleProd($libelleProd)
    {
        $this->libelleProd = $libelleProd;

        return $this;
    }

    /**
     * Get libelleProd
     *
     * @return string
     */
    public function getLibelleProd()
    {
        return $this->libelleProd;
    }

    /**
     * Set descriptionProd
     *
     * @param string $descriptionProd
     *
     * @return Produit
     */
    public function setDescriptionProd($descriptionProd)
    {
        $this->descriptionProd = $descriptionProd;

        return $this;
    }

    /**
     * Get descriptionProd
     *
     * @return string
     */
    public function getDescriptionProd()
    {
        return $this->descriptionProd;
    }

    /**
     * Set qteProd
     *
     * @param integer $qteProd
     *
     * @return Produit
     */
    public function setQteProd($qteProd)
    {
        $this->qteProd = $qteProd;

        return $this;
    }

    /**
     * Get qteProd
     *
     * @return integer
     */
    public function getQteProd()
    {
        return $this->qteProd;
    }

    /**
     * Get idProd
     *
     * @return integer
     */
    public function getidProd()
    {
        return $this->idProd;
    }

    /**
     * Set fkMed
     *
     * @param \MPCleanCoreBundle\Entity\Media $fkMed
     *
     * @return Produit
     */
    public function setFkMed(\MPCleanCoreBundle\Entity\Media $fkMed = null)
    {
        $this->fkMed = $fkMed;

        return $this;
    }

    /**
     * Get fkMed
     *
     * @return \MPCleanCoreBundle\Entity\Media
     */
    public function getFkMed()
    {
        return $this->fkMed;
    }

    /**
     * Set fkMarc
     *
     * @param \MPCleanCoreBundle\Entity\Marchandises $fkMarc
     *
     * @return Produit
     */
    public function setFkMarc(\MPCleanCoreBundle\Entity\Marchandises $fkMarc = null)
    {
        $this->fkMarc = $fkMarc;

        return $this;
    }

    /**
     * Get fkMarc
     *
     * @return \MPCleanCoreBundle\Entity\Marchandises
     */
    public function getFkMarc()
    {
        return $this->fkMarc;
    }
}

Prestation

  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
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<?php

namespace MPCleanCoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Prestation
 *
 */
class Prestation extends Marchandises
{
    /**
     * @var integer
     *
     * @ORM\Column(name="fk_art", type="integer", nullable=false)
     */
    private $fkArt;

    /**
     * @var string
     *
     * @ORM\Column(name="libelle_serv", type="text", length=65535, nullable=false)
     */
    private $libelleServ;

    /**
     * @var string
     *
     * @ORM\Column(name="description_serv", type="text", length=65535, nullable=false)
     */
    private $descriptionServ;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_prestation", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idPrestation;

    /**
     * @var \MPCleanCoreBundle\Entity\Marchandises
     */
    private $fkMarc;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="MPCleanCoreBundle\Entity\OptionPrestation", inversedBy="fkMarc")
     * @ORM\JoinTable(name="contenir",
     *   joinColumns={
     *     @ORM\JoinColumn(name="fk_marc", referencedColumnName="id_prestation")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="fk_opt", referencedColumnName="id_opt")
     *   }
     * )
     */
    private $fkOpt;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->fkOpt = new \Doctrine\Common\Collections\ArrayCollection();
    }


    /**
     * Set fkArt
     *
     * @param integer $fkArt
     *
     * @return Prestation
     */
    public function setFkArt($fkArt)
    {
        $this->fkArt = $fkArt;

        return $this;
    }

    /**
     * Get fkArt
     *
     * @return integer
     */
    public function getFkArt()
    {
        return $this->fkArt;
    }

    /**
     * Set libelleServ
     *
     * @param string $libelleServ
     *
     * @return Prestation
     */
    public function setLibelleServ($libelleServ)
    {
        $this->libelleServ = $libelleServ;

        return $this;
    }

    /**
     * Get libelleServ
     *
     * @return string
     */
    public function getLibelleServ()
    {
        return $this->libelleServ;
    }

    /**
     * Set descriptionServ
     *
     * @param string $descriptionServ
     *
     * @return Prestation
     */
    public function setDescriptionServ($descriptionServ)
    {
        $this->descriptionServ = $descriptionServ;

        return $this;
    }

    /**
     * Get descriptionServ
     *
     * @return string
     */
    public function getDescriptionServ()
    {
        return $this->descriptionServ;
    }

    /**
     * Get idPrestation
     *
     * @return integer
     */
    public function getIdPrestation()
    {
        return $this->idPrestation;
    }

    /**
     * Set fkMarc
     *
     * @param \MPCleanCoreBundle\Entity\Marchandises $fkMarc
     *
     * @return Prestation
     */
    public function setFkMarc(\MPCleanCoreBundle\Entity\Marchandises $fkMarc = null)
    {
        $this->fkMarc = $fkMarc;

        return $this;
    }

    /**
     * Get fkMarc
     *
     * @return \MPCleanCoreBundle\Entity\Marchandises
     */
    public function getFkMarc()
    {
        return $this->fkMarc;
    }

    /**
     * Add fkOpt
     *
     * @param \MPCleanCoreBundle\Entity\OptionPrestation $fkOpt
     *
     * @return Prestation
     */
    public function addFkOpt(\MPCleanCoreBundle\Entity\OptionPrestation $fkOpt)
    {
        $this->fkOpt[] = $fkOpt;

        return $this;
    }

    /**
     * Remove fkOpt
     *
     * @param \MPCleanCoreBundle\Entity\OptionPrestation $fkOpt
     */
    public function removeFkOpt(\MPCleanCoreBundle\Entity\OptionPrestation $fkOpt)
    {
        $this->fkOpt->removeElement($fkOpt);
    }

    /**
     * Get fkOpt
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getFkOpt()
    {
        return $this->fkOpt;
    }
}

En sachant que Prestation a l’air de fonctionner. En tout cas, je n’ai pas d’erreur quand je vais sur la page des prestations alors que j’ai cette erreur avec les produits.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte