1

我正在运行以下查询,它返回一个 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”,因为它作为字符串传递到查询中。我对此知之甚少,但我想如果我有正确的语法,我可以在那里得到一个值。

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

提前致谢

4

1 回答 1

2

您获得该值是因为您在 SQL 查询中使用'node' AS field_data_my_field_node_entity_type.

如果您的问题是如何获取节点的实体类型,则始终是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.
}
于 2013-05-03T00:47:52.387 回答