2014-12-18 31 views
1

我有表:在Symfony2中兩次加入與學說(語法錯誤)

Car(Auto) ->(1:N) Rent (N:1) <- Department(Abteilung) 

我想加入他們內部聯接在一起。租金是部門和汽車的ID。

如果我做了兩次連接,我得到一個錯誤。有一個加入它的工作。這是爲什麼?我怎樣才能解決這個問題?

$result = $this->getDoctrine()->getRepository('ChrisKfzBuchungBundle:Rent') 
      ->createQueryBuilder('r') 
      ->innerJoin('ChrisKfzBuchungBundle:Rent','ChrisKfzBuchungBundle:Auto') 
      ->innerJoin('ChrisKfzBuchungBundle:Rent','ChrisKfzBuchungBundle:Abteilung') 
      ->where('r.mieteStart >= :date_from') 
      ->andWhere('r.mieteEnde <= :date_to') 
      ->setParameter('date_from', $date_from) 
      ->setParameter('date_to', $date_to) 
      ->distinct() 
      ->getQuery()->getArrayResult(); 

[Syntax Error] line 0, col 129: Error: Expected Literal, got 'JOIN'

謝謝!

+0

嘗試使參加這樣的:' - > innerJoin( 'r.auto', '汽車)'和' - > innerJoin(' r.abteilung '' abteilung)' – manix

+0

那麼有沒有語法錯誤,但我得到沒有結果表'abteilung' –

+0

這是因爲你只在' - 'createQueryBuilder('r')''r'' – manix

回答

1

這很有效,感謝manix的幫助。我必須糾正連接並使用addSelect(我未知的命令)。

$result = $this->getDoctrine()->getRepository('ChrisKfzBuchungBundle:Rent') 
      ->createQueryBuilder('r') 
      ->addSelect('abteilung') 
      ->addSelect('auto') 
      ->join('r.auto','auto') 
      ->join('r.abteilung','abteilung') 
      ->where('r.mieteStart >= :date_from') 
      ->andWhere('r.mieteEnde <= :date_to') 
      ->setParameter('date_from', $date_from) 
      ->setParameter('date_to', $date_to) 
      ->distinct() 
      ->getQuery()->getArrayResult(); 
+0

優秀的作品! – manix