2013-07-24 6 views
1

У меня есть «сотрудник» организации, который связан с одним или несколькими «управляющими» объектами. Поэтому я использую таблицу присоединиться и объединение в сущности сотрудника следующим образом:doctrine: есть ли способ использовать связанный объект в 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());