2013-07-24 66 views
1

我有一個實體'employee',它與一個或多個'manager'實體關聯。 因此我使用一個連接表和關聯的員工實體如下:學說:有沒有在findBy中使用關聯實體的方法

/** 
* @ManyToMany(targetEntity="manager_entity") 
* @JoinTable(name="manager_employees", 
* joinColumns={@JoinColumn(name="emp_id", referencedColumnName="id")}, 
* inverseJoinColumns={@JoinColumn(name="manager_id", referencedColumnName="id", unique=true)} 
*) 
*/ 
protected $managers; 

這個已經工作。但現在我想要檢索特定經理的所有員工。 因此,我要問,如果它能夠做這樣的事情:

$mgr = $this->em->getRepository ('Entities\manager')->findOneBy (array (
       "alias" => $this->get('alias')); 
// only pseudo code - i know that $managers is a list of managers and $mgr cannot be compared to that 
$empList = $this->em->getRepository('Entities\employee')->findBy(array("managers" => $mgr)); 

回答

0

這樣一個函數添加到你的資料庫:

public function findByManager($managerId) 
{ 
    return $this->getEntityManager() 
     ->createQueryBuilder() 
     ->from('employee', 'e') 
     ->innerJoin('e.managers m') 
     ->where('m.Id = :managerId') 
     ->setParameter('managerId', $managerId) 
     ->getQuery() 
     ->getResult(); 
} 

,然後只用:

$employee = $repository->findByManager($manager->getId());