2012-07-04 47 views
0

我有如下表(文章,類別,關係)結構:學說1.2 - 建立用戶搜索輸入後查詢

articles 
>id 
>title 
>body 

cats 
>id 
>title 

cat_article_relations 
>id 
>cat_id 
>article_id 

現在,我創建了一個頁面,用戶可以選擇一個或多個類別(使用複選框)。提交搜索表單後,我有一個包含所有類別標識的數組。現在,當我嘗試加載具有所有選定類別的所有文章時,出現了我的問題。

使用:

...  
->leftJoin('a.Cat_article_relations rl') 
->andWhere('rl.cat_id = ?', $sg[0]) 
... 

它的工作原理,因爲我只認準一個包含類別。只要我通過所有的類別id(在我的數組中)添加了多個「 - >和Where」,它就不再工作了。 我檢查了任何解決方案的Doctrine 1.2文檔,但找不到任何東西。 「 - > whereIn」和類似的沒有給我想要的結果。

我只想得到所有與所有選定類別都有關係的文章。也許有人可以給我一個提示:)

信息: 如果你有一個純的MySQL解決查詢這將是一個很大的幫助對我來說太。它不必與教義一起寫。

感謝

+0

你能解釋一下爲什麼'whereIn'是錯在這案件? – j0k

+0

- > whereIn('rl.cat_id',$ sg)返回至少有一個所選類別的所有文章,但我只想獲取與我的數組中的所有類別都有關係的文章。 – Peter

回答

0

我不知道如果我理解的關係,但這應該從改變:

->leftJoin('a.Cat_article_relations rl') 
->andWhere('rl.cat_id = ?', $sg[0]) 

->leftJoin('a.Cat_article_relations rl WITH rl.cat_id=?', $sg[0])