ManyToOne on queryBuilder symfony 3

时间:2017-07-23 02:49:47

标签: symfony search doctrine-orm query-builder many-to-one

我有2个实体FederationPays,实体Federation有一个属性ManyToOne

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

我想使用QueryBuilder构建一个查询,以根据使用该属性$nomPays的搜索获取所有行。

我试过了:

 $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();

问题是结果为0且没有显示行,但是当我根据实体的另一个属性进行搜索时,结果显示出来并且没有错误。

我只是想知道是否有什么不对,我没注意到。

1 个答案:

答案 0 :(得分:0)

你错了'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();