2016-11-10 28 views
1

私はちょっと、querybuilderを使用して結合クエリを作成しています。 "Person"というテーブルと "Vacancy"というテーブルがあります。人が空席にリンクしている場合、person.idとvacancy.idは "Candidacy"というテーブルに保存されます。だから、どのように私は、linkeのすべての人をvacancy.id 1に得るのですか?symfonyでDoctrineとの結合クエリを作成するには?

したがって、私はAppBundle:Candidacyエンティティを開始する必要がありますか?

$entity = $em 
    ->getRepository('AppBundle:Person') 
    ->createQueryBuilder('p') 
    ->join('p.id', 'c') 
    ->where('c.vacancyId= 1') 
    ->getQuery() 
    ->getResult(); 

ありがとうございます。

+1

すべての結合方法については、http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference /query-builder.html#high-level-api-methods 怠け者で読むことはできません;) – rokas

答えて

1

例:

public function getPersonVacancy($personId) { 
    $qb = $this->createQueryBuilder('p'); 
    $qb->leftJoin('p.vacancy', 'v'); 
    $qb->select('v.name', 'v.id'); 
    $qb->where('p.id = :personId'); 
    $qb->setParameter('personId', $personId); 
    return $qb ->getQuery()->getResult(); 

これはあなたにそれをコピーペーストで動作しない場合があります例を与えることです。 また、すべての結合方法については、doctrineのドキュメントで説明しています。自由にお読みくださいhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html

+0

それは仕事でした、ありがとうございます! – Mason

1

多対多の関係にあるようです。 PersonとCandancyのテーブルをCandidacy to Person、Candancy to Candidacyをリンクする必要があります。

small example:Entity Userは、UserEngagementテーブル経由でEngagementに関連付けられています。あなたのリポジトリ内

 $qb = $this->_em->createQueryBuilder() 
     ->select('u') 
     ->from($this->_entityName, 'u') 
     ->join('u.userEngagements', 'ue') 
     ->join('ue.engagement', 'en') 
     ... 
関連する問題