我正在运行以下查询,该查询返回一个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',因为它以字符串形式传递给查询。我对此并不是很了解,但我想如果我有正确的语法,我可以在那里得到一个值。
知道这个查询应该如何工作吗?
提前致谢
答案 0 :(得分:2)
您正在获取该值,因为您使用'node' AS field_data_my_field_node_entity_type
在SQL查询中设置它。
如果您的问题是如何获取节点的实体类型,那么总是 node ; "节点"中没有字段。包含该值的表。
如果您添加了" field_data_my_field_node_entity_type"字段到一个或多个内容类型,并且您想要获取该字段的内容,您需要按照这些步骤,因为节点字段的内容不包含在"节点"表
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.
}