Symfony 内连接符号学说
目前,我有一个DQL查询,我想用QueryBuilder重写它,但因为我使用了几个实体,它很复杂,我看过一些示例,但我不理解多个实体与我想重写的代码之间的关系如下:Symfony 内连接符号学说,symfony,doctrine,Symfony,Doctrine,目前,我有一个DQL查询,我想用QueryBuilder重写它,但因为我使用了几个实体,它很复杂,我看过一些示例,但我不理解多个实体与我想重写的代码之间的关系如下: Public function getDepartamentoEmpresaEmpleado($numdoc){ // Muestra todos los departamentos de la empresa a la cual pertenece el empleado logeado $em = $this-&
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;
}
这应该行得通
$Departamentos = $empresa_repo->createQueryBuilder('a')
->innerJoin('a.idcentroCosto', 'b')
->innerJoin('b.idempresa', 'c')
->andWhere('c.idempresa = :idempresa')
->setParameter('idempresa', $idempresa)
->getQuery()
->getResult();
执行innerJoin时不需要指定实体,因为
条令已经通过实体映射了解了它。试试这个
将其添加到DepartmentorHEntity的存储库中
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;
}
希望这能奏效。非常感谢