2012-05-08 42 views
1

querys我有3個實體:person,與IDemployeeapplicantSymfony2的形式,很多與實體類型(Doctrine2)

實體person有變化employeeapplicant和OneToOne關係。

員工和申請人有一個人作爲ID,referencedColumnName="id",和一個關係OneToOne。

很好,當我創建與實體person,一個形式顯示了所有applicants一個輸入選擇,這要歸功於Doctrine2的模糊負荷進行查詢檢索每個person,各有關候選人及相關empleado,這意味着bd 2000人正在做近6000個請求bd,只顯示名字。

如果我不打印表格,沒有問題,但是,如果我把這個觀點:

{{ form_rest(formularioEnlazarCandidato.person) }} 

而且Doctrine2執行很多querys的。

我不知道如何解決這個問題,至於顯示錶單中的實體不會讓我做只選per.idper.name

回答

0

我有類似的問題,他們幫助我 - 看這裏Optimize DQL with double join。基本上你需要fetch join在你的倉庫 - 我做的:

class ProfileRepository extends EntityRepository { 

    public function findAll() 
    { 
     $em = $this->getEntityManager(); 
     $qb = $em->createQueryBuilder() 
       ->select("p, stu, sta, pdd, pdt, pdc") 
       ->from('AldenBonBundle:Profile', 'p') 
       ->leftJoin('p.studies', 'stu') 
       ->leftJoin('stu.statute', 'sta') 
       ->leftJoin('p.disabilityDegree', 'pdd') 
       ->leftJoin('p.disabilityType', 'pdt') 
       ->leftJoin('p.disabilityCode', 'pdc') 
       ->orderBy('p.profileId') 
     ; 
     $res = $qb->getQuery()->getResult(); 
     return $res; 
    }