Bonjour,

Je rencontre une erreur de conception de requête avec les méthodes find*

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
{
    ....
}
La commande doctrine:schema:create a bien créer une table avec la colonne discriminator.

Lorsque je veux récupérer les éléments ClassSubOne via le repository j'ai une erreur au niveau de la requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$entityManager->getRepository('ProjMyBundle:ClassSubOne')->findAll()
Me donne une requête
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