Bonjour,
Je rencontre une erreur de conception de requête avec les méthodes find*
La commande doctrine:schema:create a bien créer une table avec la colonne discriminator.
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 <?php namespace Proj\Bundle\MyBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; /** * ClassTop * * @ORM\Table() * @ORM\Entity(repositoryClass="Proj\Bundle\MyBundle\Repository\ClassTopRepository") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="aVal", type="string") * @ORM\DiscriminatorMap({ "ValOne" = "ClassSubOne", "ValTwo" = "ClassSubTwo", "ValThree" = "ClassSubThree" }) * */ class ClassTop { ..... } class ClassSubOne extends ClassTop { .... } class ClassSubTwo extends ClassTop { .... } class ClassSubThree extends ClassTop { .... }
Lorsque je veux récupérer les éléments ClassSubOne via le repository j'ai une erreur au niveau de la requête
Me donne une requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part $entityManager->getRepository('ProjMyBundle:ClassSubOne')->findAll()
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT field, field2 FROM CLASSTOP WHERE AVAL IN ()
Je n'ai rien dans le IN(). Le fonctionnement normal devrait donner
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT field, field2 FROM CLASSTOP WHERE AVAL IN ('ValOne')
Un petit coup de main pour y voir plus clair ne serait pas de refus
Merci
Partager