2009-12-09 55 views
1

我掙扎與一種觀點認爲,從使用兩個節點的參考場一個節點獲得數據一點點,它指向同一類型的內容。在我的路徑中,我得到一個字符串作爲參數,我們稱之爲$fruit節點關係在Drupal查看

如果我自己編寫查詢,我會做的查詢就像SELECT * FROM recipe WHERE (fruit_1=$fruit OR fruit_2=$fruit)。我的問題是,我不知道如何在Drupal視圖中執行此操作。有什麼建議麼?

更新: 我終於解決了我一直在試圖做的事情。對我來說,解決辦法是使用一個ViewViews Or參數,並使用第一​​參數設置兩個參數值相同的配合使用​​。不知道我是否正確解釋了我的問題或解決方案,但如果有人需要更詳細的解釋,請隨時提問。

回答

2

觀點或模塊插件:http://drupal.org/project/views_or

這真的應該被包含在默認視圖,因爲它是如此的強大。

的「開始替代」選項實質上放置一個「(」在 查詢。「下一步另類」選項基本上會將「或」在您的查詢。 的「端的選擇」選項實質上放置一個「)」在你的查詢中。

視圖過濾器在每個字段之間設置爲'AND',這增加了'OR'功能。因此,使用你的榜樣您的過濾器將類似於:

Content Type = Recipe 
Begin Alternatives 
Node Title = fruit_1 
Next Alternative 
Node Title = fruit_2 
End Alternatives 

注意,您可以通過使用更多的「未來替代」過濾器有幾個或選項,其它過濾器之間的每一個地方的「OR」。如果仍然令人困惑,請在每次更改後在視圖窗格中查看查詢預覽。

+0

不錯的發現! (+1) – mac 2009-12-09 19:25:22

+0

我一直在嘗試Views或一段時間,但我似乎並沒有得到如何做到這一點。只要我有一個帶有Node ID驗證器的參數,它就可以按預期工作,但是當我添加一個'Next Alternative'並且驗證我的第二個字段與相同的值(使用'Share argument')時,我得到一個空的'WHERE'和一個sql錯誤。不知道我做錯了什麼 – Marco 2009-12-10 08:06:01

1

我不認爲有一種方法可以在視圖UI中執行...... OR ...部分查詢。但是,您可以創建自己的模塊並使用視圖UI生成查詢的第一部分,然後在模塊中使用hook_views_query_alterWHERE (fruit_1=$fruit OR fruit_2=$fruit)附加到查詢的末尾。

有關hook_views_query_alter的更多信息herehere。祝你好運。