2013-07-09 23 views
0

我在學說3個表,爲了簡單起見,我會打電話給他們:UMR主義檢索和訂單數據和2個表深度

U可以M的和R

M可以R

R能有什麼

作爲圖中,這可能看起來像:

U ---> M 
|  | 
|  V 
'----> R 

我想要做的就是創建一個查詢來獲取所有R的相關U無論是通過M或直接由一列在R訂購,查詢被列在R

在PHP

目前我有:

$qb->select('r') 
    ->from('R','r') 
    ->where('r.u = :uid') 
    ->orderBy('r.order','DESC') 
    ->setParameter('uid', $U->getId()) 
    ->setFirstResult($offset) 
    ->setMaxResults($limit) 
    ->andWhere(
     $qb->expr()->orX(
      $qb->expr()->like('r.q1',':query'), 
      $qb->expr()->like('r.q2',':query') 
     ) 
    ) 
    ->setParameter('query', "%" . $query . "%"); 

我想加盟m.r的莫名其妙,同時仍然能夠查詢它們的屬性。我曾嘗試:

$qb->select('u.r, m.r') 
    ->from('U','u') 
    ->where('u.id = :uid') 
    ->join('u.m','m') 
    ->orderBy('u.r.order','DESC') 
    ->setParameter('uid', $U->getId()) 
    ->setFirstResult($offset) 
    ->setMaxResults($limit) 
    ->andWhere(
     $qb->expr()->orX(
      $qb->expr()->like('u.r.q1',':query'), 
      $qb->expr()->like('u.r.q2',':query') 
     ) 
    ) 
    ->setParameter('query', "%" . $query . "%"); 

以及許多其他的東西,但無濟於事...

在此先感謝!

回答

0

好了,所以我落得這樣做是:

M其中u.id = :uid

選擇所有ID的話,從R選擇所有地方r.u = :uid OR r.m IN (result from first query)

其實很簡單,我不知道爲什麼。我以前沒有想到...