2010-07-24 78 views
1

在我的申請,我經常做的教義這樣的查詢:水合物學說收集與其他模型比FROM子句

$coms = Doctrine_Core::getTable('Comment') 
->createQuery('c') 
->join('c.article a') 
->join('a.Writter w') 
->where('w.something = ?', $something); 

我想在writter的條件來提取文章的評論。 Le查詢從評論表開始(因爲最後,我們想要一個評論的學說集合),接下來我加入所有文章,然後加入所有的作者。最後,我對作者的條件進行了限制。

該查詢可以與在此順序的接縫更加優化:

$coms = Doctrine_Core::getTable('Writter') 
->createQuery('w') 
->select('c.*') 
->join('w.Article a') 
->join('a.Comments c') 
->where('w.something= ?', $something); 

像這樣,通過關節操縱線的數目是更降低,因爲在writter限制在製成。第一。

但是與此代碼,我得到一個錯誤:

的根類的查詢(別名w)爲必須具有至少一個字段選擇。

的解決方案確實存在把這個順序關節和最終獲得評論的學說收藏?

+0

在你的第二個查詢,什麼是「R」? 「W」和「r」,「c」或「a」之間沒有關係。 – nacmartin 2010-07-25 14:53:32

+0

我已糾正此問題。 W(ritter)= R(edacteur)用法語。 - 一位作家寫了很多文章。 - 一篇文章包含很多評論。 – Julien 2010-07-25 15:30:27

回答

0

不,沒有其他解決方案,而不是保持您的第一個查詢。您始終使用getTable('xyz')獲取您選擇的根類的對象的集合。這是沒有辦法的。

1

你應該簡單地將連接表的選擇(如學說告訴你錯誤消息BTW):

->select('c.*, w.*')