Inheritance Single Table - methode Find
Bonjour,
Je rencontre une erreur de conception de requête avec les méthodes find*
Code:
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:
$entityManager->getRepository('ProjMyBundle:ClassSubOne')->findAll()
Me donne une requête
Code:
SELECT field, field2 FROM CLASSTOP WHERE AVAL IN ()
Je n'ai rien dans le IN(). Le fonctionnement normal devrait donner
Code:
SELECT field, field2 FROM CLASSTOP WHERE AVAL IN ('ValOne')
Un petit coup de main pour y voir plus clair ne serait pas de refus :oops:
Merci