2015-09-30 38 views
0

我試圖從搜索表單中獲取航班列表。用戶選擇一個城市,一些乘客,然後我的查詢返回所有可用航班。Symfony2子級查詢

我這個嘗試之一:

public function findSearch($city, $nbpax) 
{ 
    $qb = $this->createQueryBuilder('a'); 

    $qb->where('a.precisedate >= :now') 
     ->setParameter('now', new \DateTime()) 
     ->andWhere('a.available > :min') 
     ->setParameter('min', $nbpax) 
     ->andWhere('a.departure > :min') 
     ->setParameter('min', $nbpax) 
     ->andWhere('a.departure.city = :city') 
     ->setParameter('city', $city) 
     ->orderBy('a.precisedate', 'ASC') 
    ; 

    return $qb 
     ->getQuery() 
     ->getResult() 
     ; 
} 

但好像a.departure.city不被識別爲一個有效的比較(出發是連接到一個城市,一個一對多的關係機場)

如何更改我的查詢以便我可以訪問機場城市?

回答

0

你也許可以做到在出發攀比之前的加入,讓:

$qb->join('a.departure', 'd') 

然後代替a.departure你只是做d,例如

->andWhere('d.city = :city') 

我不明白的部分是a.departure > :min條款,你比較反對在出發實體哪個領域?或者是離場一場?在這種情況下,a.departure.city = :city沒有意義。

無論如何,DQL documentation on joins是一個很好的參考來源。

+0

這太棒了。答案和文件。 –