如何构建查询以获取一系列节点及其字段值的字段值? -- 7 领域 和 nodes 领域 和 entities 领域 和 database 领域 drupal 相关 的问题

How do you build a query to get a series of nodes and their field values filtered by field values?


6
vote

问题

中文

希望有疣7体验的人可以指向正确的方向。

我正在创建一个自定义模块来查询某些节点和组并按其字段值对它们进行排序。

我试图使用视图,但似乎无法以我需要的格式获取结果,所以我决定直接查询数据库并构建我自己的输出。

在Drupal 7中查询节点的最简单方法是我注意到的每个字段都有一个表,这似乎会对我必须写出极其复杂的询问?

是否有任何方法来查询节点数据和过滤/组结果,或者只能使用原始SQL完成。

如果后者可以向我展示一个包含Drupal 7字段值的示例查询?

英文原文

Hopefully someone with Drupal 7 experience can point me in the right direction.

I'm creating a custom module to query some nodes and group and sort them by their field values.

I tried to use Views but it seems that it's not possible to get the results in the format I need so I've decide to query the database directly and build my own output.

What's the easiest way to query nodes in Drupal 7 as I notice there is a table for every field now which would seem to make any query that I have to write extremely complex?

Are there any methods to query node data and filter/group the results or can it only be done using raw SQL.

If the latter can you show me an example query that includes Drupal 7 Field values?

           

回答列表

12
 
vote
vote
最佳答案
 

我的第二个Jeremy对观点努力尝试的建议。但是,如果您绝对必须直接在代码中编写您的查询,那么您将想要使用 <代码> EntityFieldQuery

例如,获取具有"foo" 的文本字段值的所有节点的计数:

  // Get field information $field = field_info_field('field_name'); $query = new EntityFieldQuery; $query->entityCondition('entity_type', 'node')   ->entityCondition('bundle', 'NODE TYPE')   ->fieldCondition($field, 'value', 'foo')   ->count();  $count = $query->execute();   

如果您不想要计数,但结果相反,您会留下计数部分,并获取结果:

  foreach ($query->execute() as $entity_type => $entities) {   foreach ($entities as $entity_id => $entity) {   ...   } }   

商务人员也有一个好博客文章详细说明了一个简单的用例。

 

I second Jeremy's suggestion of trying harder with views. However, if you absolutely must write your query directly in code, you'll want to use EntityFieldQuery.

For example, to get a count of all nodes with a text field value of 'foo':

// Get field information $field = field_info_field('field_name'); $query = new EntityFieldQuery; $query->entityCondition('entity_type', 'node')   ->entityCondition('bundle', 'NODE TYPE')   ->fieldCondition($field, 'value', 'foo')   ->count();  $count = $query->execute(); 

If you don't want a count, but results instead, you would leave off the count part, and fetch results:

foreach ($query->execute() as $entity_type => $entities) {   foreach ($entities as $entity_id => $entity) {   ...   } } 

The Commerce Guys also have a good blog post detailing a simple use case.

 
 
   
   
1
 
vote

我试图使用视图,但似乎 无法获得结果 以我所需要的格式,所以我决定了 直接查询数据库并构建 我自己的输出。

我的第一个建议是要努力观点。

查询节点最简单的方法 在Drupal 7,我注意到有一个 现在的每个领域的表 似乎对我必须的任何疑问 写非常复杂?

是的,它将是,这就是为什么我做出了第一个建议。

一个提示可以使用视图来执行查询,但通过以编程方式调用视图来生成自己的输出。

第二尖端将使用由视图生成的查询作为起点。

Drupal 7中的字段通过字段API定义。因此,您需要调查它以了解如何存储字段并帮助您定义查询。它可以完成,但它并不简单。

 

I tried to use Views but it seems that it's not possible to get the results in the format I need so I've decide to query the database directly and build my own output.

My first suggestion would be to try harder with views.

What's the easiest way to query nodes in Drupal 7 as I notice there is a table for every field now which would seem to make any query that I have to write extremely complex?

Yes it would be, which is why I made the first suggestion.

One tip could be to use a view to do the query but to produce your own output by invoking the view programatically.

A second tip would be to use the query which is generated by views as a starting point.

Fields in drupal 7 are defined via the field api. So you would need to look into that to find out how the fields are stored and help you to define your query. It can be done but it is not straightforward.

 
 
 
 

相关问题

2  Drupal Commons通知队列不起作用  ( Drupal commons notifications queue is not working ) 
我有一个我们注意到通知的网站不再有效。队列状态有238个通知,它们将立即设置为处理。发送方法是"邮件" ,其他电子邮件从网站出局,没有问题(例如注册电子邮件)。 我正在寻找任何可以帮助我解决此问题的信息。看门狗表没有中没有条目,没有我可以看到要记录任何类型的调试信息的设置,而且没有一般设置或指示我可以看到的那将导致问...

1  定制内容类型在注册表中。没有节点标题字段  ( Custom content type on registration form no node title field ) 
我将我的自定义内容类型设置为显示在用户注册表上。我看到CCK字段,但我没有看到节点标题字段(必填字段):( 有人可以提供任何建议吗? ...

0  自定义CCK货币曝光过滤器可用货币  ( Custom cck currency exposed filter for available currencies ) 
我试图以这样的方式设置可用货币: function mymodule_form_alter(&$form, $form_state, $form_id) { /** Modify exposed filter views */ if ($form_id == 'views_exposed_form...

3  使用默认标题创建内容类型  ( Create content type with a default title ) 
如何默认的东西,静止,不动化? 我有一个内容类型(加上其他计划),我计划用作类似于类似于"日报" 的东西的数据提交或"为日历创建一个事件" 类型内容。我计划在大多数情况下隐藏这些"节点" 并使用视图来查看,编辑,添加,删除。标题将主要浪费空间和不需要的。 如何为"创建" 屏幕进行默认,不可改变的标题?或...将内容类...

6  使用节点引用NID创建图像字段文件路径的令牌  ( Creating a token for the image field file path with node reference nid ) 
由于不支持Drupal 7令牌中的字段,因此如何创建代码以在图像字段文件路径中替换令牌? 编辑: 首先,这与节点参考URL窗口小部件,因此只要在引用的节点上单击链路,所引用的节点的NID都将加载到表单阵列中。 我意识到没有任何上下文来加载信息来传递给令牌模块,因为在调用token_replace()时没有有关节点...

0  邮政编辑器与图像上传  ( Post editor with image upload ) 
我需要一个模块或修补程序或帖子编辑器的东西,允许您将图像上传到POST 中 任何帮助都得到了赞赏。 ...

2  如何处理外部数据库访问权限?  ( How do i troubleshoot an external database access ) 
我成功设置了Drupal 6站点以访问外部数据库并通过视图呈现在表中。 现在我正在尝试移动到Drupal 7,我不确定如何排除故障。在Drupal6中,我可以在编辑settings.php文件后打开表向导;它显示了新表,我可以添加它们。 有没有办法知道Drupal 7是否可以看到数据库?我编辑了settings.p...

2  当他们尝试投票节点时将匿名用户重定向到登录页面  ( Redirect the anonymous users to the login page when they try to vote a node ) 
我正在使用投票向上/向下在节点上投票。我希望匿名用户可以看到投票小部件,但在他们投票之前,他们应该首先重定向到登录页面。我尝试设置权限如下: 在节点上使用投票 - 检查匿名用户 当我尝试作为匿名用户投票时,我收到以下错误。 出现/投票/节点/ 1470 / -1 / vote / welpful / 59a7d...

5  如何使用hook_menu()设置菜单项的父级?  ( How to set the parent of menu items creating using hook menu ) 
我需要基于数据库的值动态创建一系列菜单项。 这是我 hook_menu() 函数的一个例子;在此代码段中,我删除了DB查询并刚添加了一个数组来证明概念: function MYMODULE_menu() { $years = array(2011, 2010, 2009); foreach ($year...

3  新(以编程创建的)被阻止的用户在重置时拒绝访问  ( Newly programmatically created blocked user gets access denied when resetting ) 
我正试图以阻塞以 over。我找到了两种方法来执行此操作:user_save和drupal_execute。但是,第一个不发送通知电子邮件与链接重置密码,而另一个方法确实发送邮件,但单击链接时,我得到拒绝访问。 我用一个新的安装尝试了2个环境(Ubuntu和Windows)的代码。这是我实际使用的代码: // ...

0  如何列出当前用户的帖子?  ( How can i list the current users posts ) 
如何列出当前用户的所有帖子?我知道我应该使用视图,但我该怎么做? ...

0  具有注释的全节点的视图,即内容类型  ( A view of full nodes with comments that are a content type ) 
我已经将这个问题分开到以前试图加入他们的其他问题来创建我的最终解决方案。然而,我正在尝试的结合导致问题。 我需要一个注释字段来能够使用CCK字段。要执行此操作,我正在使用NodeComment模块,因为它允许您使用内容类型进行评论(http://drupal.stackexchange.com/questions/3...

2  工作流程无法正常工作  ( Workflow does not work correctly ) 
我为内容类型"文章" 创建了一个工作流程: 创造 - &gt;草案 草案 - &gt;专家评论 专家评论 - &gt;头评 头评 - &gt;发布 当作者创建文章节点时,并将其发送给"专家评论" ,他们仍然可以查看和编辑节点但"专家评论" 无法查看节点。 是工作流程的错误或技巧? ...

0  如何检测用户何时导航到分类学术语页面并访问该术语数据?  ( How to detect when a user navigates to a taxonomy term page and access that term ) 
我正在使用PHP代码过滤器进行自定义目录导航,并将代码放在块中。我需要检测用户何时导航到分类学术语页面,并提取与术语相关的数据,以便我可以显示该术语的子项,就像一个web目录。 ...

2  在视图中显示节点字段  ( Displaying node fields in a view ) 
我有一个名为scippet的内容类型。片段将有一个图像字段和无限制的文本字段。 我想在视图中输出字段: 图像字段(image.png) 文本字段(text1) 文本字段(text2) 文本字段(text3) 文本字段(text4) 始终是映像字段,不同的文本字段遵循它。我想把它放入幻灯片格式,褪色转换。 现在,图...

0  有什么方法可以实现分层分类页面结构?  ( What are some ways to implement a hierarchical taxonomy page structure ) 
我目前正在尝试决定如何架构客户端的网站,并且他们需要有需要具有分层的页面结构。这必须能够深入地去至少3个级别,并选择曝光各种过滤器。 我会假设使用接受多个参数的视图并使用分类物将是关于开发这一点的方式,但我想问一个社区,如果有任何Contract模块替代方案,我也可以调查。 ...

0  什么是数据类型?  ( What is the datatype ) 
我需要的数据是由devel作为stdclass的对象报告。 那是什么课?它是$ node,$ term或$ page吗?如果不猜测,如何确定该对象是什么,以便提取数据? ...

2  应该使用哪个模块来创建客户支持部分?  ( Which modules should i use to create a customer support section ) 
我有一个我需要获得客户的网站(不是客户端)支持系统设置。 支持票务系统,不幸的是,旨在实现客户支持。我认为风暴也是如此(在任何情况下都是巨大的)。 我看到它的方式,我有一些选择: 完全设置了不同的碎屑,并使用了OpenoTrium或Drupal Commons的东西来支撑区域。 omg矫枉过正。另外,我想让它是我当...

0  如何使用视图在“用户配置文件”页面中添加其他选项卡  ( How to add additional tab in the user profile page using views ) 
我已安装标志模块,它附带了一些添加到视图列表中的视图。其中一个将粘贴到用户页面作为其他选项卡,当单击时,将显示由正在预览该特定用户标记的所有节点的列表。到目前为止这么好。 问题是在我的网站中,我不使用用户页面的"用户/ uid " 。我使用路径(示例)"某事物/ uid " 。当我输入视图并使用"某事/ UID...

0  为什么要创建首页不起作用?  ( Why creating the front page doesnt work ) 
我创建了名为page的文件 - front.tpl.php,它是空的,在花环主题中,将前端设置为它。我仍然可以访问前页:为什么? ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.