📜  Drupal 9 使用实体类型管理器选择具有查询条件的节点数据 - PHP (1)

📅  最后修改于: 2023-12-03 15:30:34.365000             🧑  作者: Mango

Drupal 9 使用实体类型管理器选择具有查询条件的节点数据

在Drupal 9中,实体类型管理器是一个非常有用的工具,可以用来管理节点、用户、评论等各种实体类型。当我们需要根据一些查询条件获取特定的节点数据时,可以使用实体类型管理器来实现。

步骤

首先,我们需要获取实体类型管理器的服务对象:

$entity_type_manager = \Drupal::service('entity_type.manager');

然后,我们可以使用getStorage()方法来获取特定类型节点的存储对象。例如,如果我们需要获取文章节点的存储对象,可以使用以下代码:

$node_storage = $entity_type_manager->getStorage('node');

接下来,我们可以使用getQuery()方法来获取一个实体查询对象。我们可以在实体查询对象上链式调用各种方法来构建我们的查询条件:

$node_query = $node_storage->getQuery();
$node_query->condition('type', 'article');
$node_query->condition('status', 1);

在上面的代码中,我们使用condition()方法来添加两个查询条件:typestatustype用于指定我们需要获取的节点类型,这里选择的是articlestatus用于指定我们需要获取已发布的节点,即状态为1的节点。

最后,我们可以使用execute()方法来执行查询,并返回符合条件的节点实体对象:

$nodes = $node_query->execute();
完整示例代码
$entity_type_manager = \Drupal::service('entity_type.manager');
$node_storage = $entity_type_manager->getStorage('node');

$node_query = $node_storage->getQuery();
$node_query->condition('type', 'article');
$node_query->condition('status', 1);

$nodes = $node_query->execute();

foreach ($nodes as $node_id) {
  $node = $node_storage->load($node_id);
  // Do something with the node object.
}
结论

使用实体类型管理器进行节点数据查询可以让我们更加方便地获取符合特定条件的节点数据。而且,实体类型管理器还可以用于管理其他类型的实体数据,例如用户、评论等。熟练掌握实体类型管理器是Drupal 9开发中非常重要的一步。