46 votes

Doctrine 2 - Comment utiliser la colonne discriminante dans la clause where ?

J'ai utilisé la colonne discriminante dans la clause where comme ceci :

//f = root entity
$qb = $this->createQueryBuilder('f');
$qb->add('where', 'f.format = \'image\' OR f.format = \'text\'');

J'ai une erreur : "Message : [Erreur sémantique] ligne 0, col 73 près de 'format = 'image'' : Error : Classe Entités \File\AbstractFile n'a pas de champ ou d'association nommé format"

Comment puis-je utiliser une colonne discriminante dans une clause where ?

Merci.

0voto

Tout ce dont vous avez besoin :

return $this->createQueryBuilder('entity')
            ->andWhere('entity.field = :field')
            ->leftJoin('entity.entity2', 'entity2')
            ->andWhere('entity2 INSTANCE OF :type')
            ->setParameter('field', 'value')
            ->setParameter('type', $this->getEntityManager()->getClassMetadata(Entity2::class))
            ->getQuery()
            ->getResult()
            ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X