1

personIDemployeeおよびの3 つのエンティティがありapplicantます。

エンティティpersonには varsemployeeapplicant、および OneToOne 関係があります。

Employee と Applicant には、ID、 with referencedColumnName="id"、および OneToOne の関係として人がいます。

いいですね、entitypersonでフォームを作成するとき、入力 select を allapplicantsで表示するには、Doctrine2 のファジーローディングのおかげでperson、各関連候補と関連 empleado を取得するクエリを作成します。これは、bd 2000 人がほぼ 6000 を行っていることを意味します名前だけを表示するよう bd に要求します。

フォームを印刷しなくても問題ありませんが、これをビューに入れると:

{{ form_rest(formularioEnlazarCandidato.person) }}

Doctrine2 は多くのクエリを実行します。

これを修正する方法がわかりません。フォームにエンティティを表示しても、選択per.idと選択しかできないからper.nameです。

4

1 に答える 1

0

私も同様の問題を抱えていて、彼らは私を助けてくれました-ここを見てください二重結合でDQLを最適化してください。基本的に、リポジトリにフェッチ結合が必要です-私は次のことを行いました:

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;
    }
于 2012-06-01T11:34:40.537 に答える