2017-07-23 2 views
0

J'ai 2 entités Federation et Pays, l'entité Federation possède une propriété ManyToOne:ManyToOne sur symfony QueryBuilder 3

/** 
    * @ORM\ManyToOne(targetEntity="Stage\AdminBundle\Entity\Pays") 
    */ 
    public $nomPays; 

Je veux construire une requête à l'aide QueryBuilder pour obtenir toutes les lignes à partir d'une recherche avec ce propriété $nomPays.

J'ai essayé:

$repository = $this->getDoctrine()->getRepository(Federation::class); 

$query = $repository->createQueryBuilder('f') 
    ->leftJoin('StageAdminBundle:Pays', 'fc', 'f.id = fc.id') 
    ->Where('f.nomPays = :value') 
    ->setParameter('value', '%'.$term.'%') 
    ->orderBy('f.nom', 'ASC') 
    ->getQuery(); 

$federations = $query->getResult(); 

Le problème est qu'il ya 0 résultat et aucune ligne est montré, mais quand je fais une recherche basée sur une autre propriété de l'entité le résultat est montré et il n'y a pas d'erreur . Je veux juste savoir s'il y a quelque chose de mal que je n'ai pas remarqué.

+0

peut-être vous devriez utiliser petite lettre où au lieu de lettre majuscule Où –

+0

toujours le même résultat, merci pour votre attention –

+0

vos données dans la base de données? –

Répondre

0

Votre tort est ici 'f.id = fc.id':

 $repository = $this->getDoctrine() 
      ->getRepository(Federation::class); 

     $query = $repository->createQueryBuilder('f') 
      ->leftJoin('StageAdminBundle:Pays', 'fc', 'f.nomPays = fc.id') 
      ->where('f.nomPays = :value') 

      ->setParameter('value', '%'.$term.'%') 
      ->orderBy('f.nom', 'ASC') 
      ->getQuery(); 
      $federations = $query->getResult();