2017-11-05 10 views
2

現在、私はQueryBuilderで書き直したいこのDQLクエリを持っていますが、いくつかのエンティティを再生するので複雑ですが、例を見ていますが、複数のエンティティが私が書き換えたいコードは次のとおりです。内部結合symfony doctrine

Public function getDepartamentoEmpresaEmpleado($numdoc){ 
    // Muestra todos los departamentos de la empresa a la cual pertenece el empleado logeado 
    $em = $this->getEntityManager(); 
    $empresa_repo = $em->getRepository('BackendBundle:Empresa'); 
    $idempresa = $empresa_repo->getVerIdempresa($numdoc); 
    $dql = "SELECT a FROM BackendBundle:DepartamentoRrhh a 
       INNER JOIN BackendBundle:CentroCosto  b WITH a.idcentroCosto  = b.idcentroCosto 
       INNER JOIN BackendBundle:Empresa   c WITH b.idempresa   = c.idempresa 
       WHERE c.idempresa = :idempresa"; 
    $query = $em->createQuery($dql)->setParameter('idempresa', $idempresa); 
    $Departamentos = $query->getResult(); 
    return $Departamentos; 
} 

答えて

0

これは

$Departamentos = $empresa_repo->createQueryBuilder('a') 
->innerJoin('a.idcentroCosto', 'b') 
->innerJoin('b.idempresa', 'c') 
->andWhere('c.idempresa = :idempresa') 
->setParameter('idempresa', $idempresa) 
->getQuery() 
->getResult(); 

を動作するはず 教義は、すでにエンティティマッピングを通してそれを知っているので、innerJoinをやったときにエンティティを指定する必要はありません。

+0

ありがとうございました – jeasomoza

0

がDepartamentoRrhhエンティティ

public function getDepartamentoEmpresaEmpleado($numdoc){ 

    $em = $this->getEntityManager(); 
    $idempresa = $em->getRepository('BackendBundle:Empresa')->getVerIdempresa($numdoc); 

    $query = $this->createQueryBuilder('a') 
     ->innerJoin('a.idcentroCosto', 'b') 
     ->innerJoin('b.idempresa', 'c') 
     ->where('c.idempresa = :idempresa') 
     ->setParameter('idempresa', $idempresa) 
     ->getQuery(); 

    $Departamentos = $query->getResult(); 
    return $Departamentos; 
} 

のリポジトリこれは動作します希望でこれを追加し、これを試してみてください。

+0

ありがとうございました – jeasomoza

+0

私は完璧に動作します – jeasomoza