php - 以编程方式从 drupal 8 获取所有节点
问题描述
我正在尝试从 drupal 获取 certian 类型的所有节点。我尝试了很多方法来实现这一点,但可能由于我缺乏 Drupal 自定义模块编程经验,我无法实现我的愿望。我在网上找到的最接近的方法是:
$nids = \Drupal::entityQuery('node')->condition('type','news')->execute();
$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);
- 第一行返回一个 id 的对象
- 第二行返回那些 id 的节点
这看起来简单直接。但是,这是输出!
{
"59": {
"in_preview": null
},
"61": {
"in_preview": null
}
}
有人可以帮忙吗,怎么了?这是正确的方法吗?
我想获取节点然后搜索它们中的每一个(我正在制作某种搜索引擎)所以我期待某种对象,然后我可以从中提取标题,正文......等。这是正确的方法吗?
解决方案
这实际上返回节点对象
$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);
也许您的输出给出的结果最少,而不是对象。如果您使用适当的调试器进行检查,您将看到这些对象。
如果您希望从查询中返回太多节点,那么一次实际获取一个节点对象可能会更好
$query = \Drupal::entityQuery('node')
->condition('status', 1) //published or not
->condition('type', 'news') //content type
->pager(10); //specify results to return
$nids = $query->execute();
foreach ($nids as $nid) {
$node = \Drupal\node\Entity\Node::load($nid);
$body = $node->body->value;
$title = $node->title->value;
//...
}
推荐阅读
- docker - 码头工人无法启动容器:“权限被拒绝”
- java - 检查列表只有一个非空元素并使用 Java 8 检索它
- python - Python中的矩阵大小
- sql-server - sql server 2016 中的 ENABLE_QUERY_OPTIMIZER_HOTFIXES 提示启用了哪些修复?
- java - Selenium Web Driver Java Element 类如何?
- linux - 使用shell从两个日期中查找天数
- ansible - 无法建立 PyEZ 连接:ConnectUnknownHostError
- r - 识别光栅文件中的 CRS
- reactjs - 如何在第三方库上禁用 React 严格模式
- vue.js - V-model 填充在不更新 DOM 的方法中