多对多关系中具有连接和条件的查询生成器
Query Builder with join and condition in Many to many relation
我与 Employee 和 MembreFamille 之间存在多对多关系。我想获得所有拥有员工的 MembreFamilles。
这是我的查询:
class MembreFamilleRepository extends EntityRepository
{
public function getMembres($emp)
{
$qb = $this->createQueryBuilder('a');
$qb
->leftJoin('a.employees', 'employees');
$qb
->where('employees.id = :id')
->setParameter('id', $emp);
return $qb
->getQuery()
->getResult()
;
}
}
当我在控制器中测试这个函数时,函数 return 0 结果。
员工实体中的映射:
/**
* @ORM\ManyToMany(targetEntity="PFE\EmployeesBundle\Entity\MembreFamille", cascade={"persist"})
*/
private $membreFamilles;
MembreFamille 实体中的映射:
/**
* @ORM\ManyToMany(targetEntity="PFE\UserBundle\Entity\Employee", cascade={"persist"})
*/
private $employees;
Controller中的使用($employee是Employee实体的一个实例):
$list = $em->getRepository('PFEEmployeesBundle:MembreFamille')->getMembres($employee->getId());
您可以使用名为 "MEMBER OF" 的结构。
class MembreFamilleRepository extends EntityRepository
{
public function getMembres($emp)
{
return $this->createQueryBuilder('a');
->where(':employee MEMBER OF a.employees')
->setParameter('employee', $emp)
->getQuery()
->getResult()
;
}
}
您可以使用名为 "MEMBER OF"
的结构
您需要为 ManyToMany 关联添加一个 JoinTable 并设置拥有方和反向方:
/**
* @ORM\ManyToMany(targetEntity="PFE\EmployeesBundle\Entity\MembreFamille",
* cascade={"persist"}, mapped="employees")
*/
private $membreFamilles;
.................................
/**
* @ORM\ManyToMany(targetEntity="PFE\UserBundle\Entity\Employee", cascade={"persist"}, inversedBy="membreFamilles")
* @ORM\JoinTable(name="membre_familles_employees")
*/
private $employees;
我与 Employee 和 MembreFamille 之间存在多对多关系。我想获得所有拥有员工的 MembreFamilles。 这是我的查询:
class MembreFamilleRepository extends EntityRepository
{
public function getMembres($emp)
{
$qb = $this->createQueryBuilder('a');
$qb
->leftJoin('a.employees', 'employees');
$qb
->where('employees.id = :id')
->setParameter('id', $emp);
return $qb
->getQuery()
->getResult()
;
}
}
当我在控制器中测试这个函数时,函数 return 0 结果。
员工实体中的映射:
/**
* @ORM\ManyToMany(targetEntity="PFE\EmployeesBundle\Entity\MembreFamille", cascade={"persist"})
*/
private $membreFamilles;
MembreFamille 实体中的映射:
/**
* @ORM\ManyToMany(targetEntity="PFE\UserBundle\Entity\Employee", cascade={"persist"})
*/
private $employees;
Controller中的使用($employee是Employee实体的一个实例):
$list = $em->getRepository('PFEEmployeesBundle:MembreFamille')->getMembres($employee->getId());
您可以使用名为 "MEMBER OF" 的结构。
class MembreFamilleRepository extends EntityRepository
{
public function getMembres($emp)
{
return $this->createQueryBuilder('a');
->where(':employee MEMBER OF a.employees')
->setParameter('employee', $emp)
->getQuery()
->getResult()
;
}
}
您可以使用名为 "MEMBER OF"
的结构您需要为 ManyToMany 关联添加一个 JoinTable 并设置拥有方和反向方:
/**
* @ORM\ManyToMany(targetEntity="PFE\EmployeesBundle\Entity\MembreFamille",
* cascade={"persist"}, mapped="employees")
*/
private $membreFamilles;
.................................
/**
* @ORM\ManyToMany(targetEntity="PFE\UserBundle\Entity\Employee", cascade={"persist"}, inversedBy="membreFamilles")
* @ORM\JoinTable(name="membre_familles_employees")
*/
private $employees;