2009-12-09 36 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。祝你好运。