![]() |
1
3
很酷的是,视图模块被扩展为更好地支持编程使用,但在此之前,您可能想看看我的一个同事试图创建类似于这样的东西: http://github.com/hugowetterberg/query_builder 与此相关的可能是服务项目试图将视图数据作为服务提供,我们目前正在将此工作分离为它自己的模块: http://drupal.org/node/709100 可能值得关注,因为它需要某种程度的对视图的编程访问。 以编程方式访问视图的模块的另一个示例是Development Seeds LiteNode: http://developmentseed.org/blog/2009/feb/4/litenode 更新日期:2010年12月15日 EntityFieldQuery 在Drupal 7中,几乎就像用编程方式使用视图来构建查询一样——区别在于EntityQueryBuilder只在实体和字段上工作,而且它还可以根据使用中的任何类型的字段存储构建查询,例如MongoDB之类的NoSQL数据库。示例如下: http://drupal4hu.com/node/267 |
![]() |
2
1
虽然这不是理想的方法,但您可以获得如下视图的结果:
这样,无论何时修改视图查询,都不必重新复制代码。我同意需要将视图拆分为查询构建API和UI。 |
![]() |
3
0
是的,我认为视图最好知道哪些表用于当前字段,因为许多模块(以及视图中的更多模块)具有钩子函数,这些函数提供有关此字段、表以及与其他表的连接类型的一些信息。
还可以通过以下方式读取表和字段的方案: http://drupal.org/project/schema |
![]() |
4
0
我很好奇-为什么您要使用视图来构建SQL,然后不使用视图? 当涉及到更困难的事情,如多对多关系、分组依据、计数、求和、子查询等,无论函数需要什么,最好自己编写(尤其是如果contrib模块不支持视图,并且您需要的不仅仅是节点表)。 对于我来说,当视图无法完成时,我编写了一个简单的模块,它用一个回调调用hook_菜单(注册路径),并执行我需要的查询。 |