2017-09-19 2 views
0

Il est possible de créer un QueryBuilder dans Symfony avec des champs qui n'apparaissent pas dans la classe Entity.Symfony: queryBuilder sans champ mappé

Quelque chose comme ceci:

MyEntity Classe: id, nom, couleur

DB Tableau: id, nom, couleur, numéro

Et puis, je suis triying à faire ceci:

$filterBuilder = $this->get('doctrine.orm.entity_manager') 
     ->getRepository('XXXXBundle:MiEntity') 
     ->createQueryBuilder('o') 
     ->select('o.number') 
     ->.......... 
    ; 

Mais je reçois cette erreur:

Erreur: classe XXXXX n'a ​​pas de champ ou d'une association nommée Numéro

+0

pouvez-vous s'il vous plaît montrer votre entité? –

+0

Mon entité n'a pas de "nombre" (et je ne dois pas mettre "nombre" dans la classe, mais existe dans la table DB.) –

+0

Vous devez ajouter un nombre dans votre entité Je pense que la doctrine est mappée par Son entité –

Répondre

1

Dans votre cas, vous devriez toujours ajouter un « numéro » unmapped proporty à votre classe, mais si vous insistez, vous pouvez utiliser une requête native de aller chercher ce que vous voulez de la DB.

Here is an example that selects all users with an age > 20 :

$query = $em->createQuery('SELECT u FROM MyProject\Model\User u WHERE u.age > 20'); $users = $query->getResult();

Comme on le voit sur Doctrine Query Language documentation page