drupal模块中的SQL查询 - 什么是节点?

时间:2013-05-02 14:29:11

标签: mysql sql drupal-7

我正在运行以下查询,该查询返回一个stcClass对象数组,如下所示:

 $result = db_query('SELECT node.title AS node_title, 
                   node.nid AS nid, 
                   node.created AS node_created, 
                   \'node\' AS field_data_my_field_node_entity_type 
                   FROM {node} node WHERE (( (node.status = :status) 
                   AND (node.type IN  (:type)) )) 
                   ORDER BY node_created DESC', 
                   array(':status'=>'1', ':type'=>'_my_content_type'));


stdClass Object
(
[node_title] => my sample title
[nid] => 331
[node_created] => 1367500781
[field_data_my_field_node_entity_type] => node
)

它返回一个stdClass对象数组。我的问题是在字段'field_data_my_field_node_entity_type'中我只有字符串'node',因为它以字符串形式传递给查询。我对此并不是很了解,但我想如果我有正确的语法,我可以在那里得到一个值。

知道这个查询应该如何工作吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

您正在获取该值,因为您使用'node' AS field_data_my_field_node_entity_type在SQL查询中设置它。

如果您的问题是如何获取节点的实体类型,那么总是 node ; "节点"中没有字段。包含该值的表。

如果您添加了" field_data_my_field_node_entity_type"字段到一个或多个内容类型,并且您想要获取该字段的内容,您需要按照这些步骤,因为节点字段的内容不包含在"节点"表

  • 获取节点的节点ID
  • 使用node_load()
  • 加载节点
$result = db_query('SELECT nid FROM {node} WHERE ((status = :status) AND (type IN  (:type)) ORDER BY created DESC', array(':status'=>'1', ':type'=>'_my_content_type'))->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $row) {
  $node = node_load($row['nid']);
  // Access the field as $node->field_data_my_field_node_entity_type.
}