> drupal 8的实体查询API:综合指南
>> drupal 8从EntityFieldQuery(Drupal 7)过渡到用于查询实体的更强大的服务。通过静态调用或依赖注入访问该服务,使用条件方法促进了复杂的查询。 本指南探讨了其功能。entity.query
entity.query
> execute()
entity_load()
存在访问服务的两种方法:entity_load_multiple()
>
entity.query
>
2。依赖注入(推荐):
<code class="language-php">$query = \Drupal::entityQuery('node');</code>这种方法是更好的可检验性和脱钩的优选。
>
构建查询以下是证明查询结构的示例:
<code class="language-php">$entity_query_service = $container->get('entity.query'); $query = $entity_query_service->get('node');</code>简单查询(已发布节点):
>
>包含一个节点ID的数组。>
>此检索在当前时间之前修改的已发表的节点,标题中包含“猫”,并在
<code class="language-php">$query = \Drupal::entityQuery('node') ->condition('status', 1); $nids = $query->execute();</code>
$nids
>条件组(和/或):
这使用>找到匹配标题或标签条件的节点。
也可用。<code class="language-php">$query = \Drupal::entityQuery('node') ->condition('status', 1) ->condition('changed', REQUEST_TIME, '<') ->condition('title', 'cat', 'CONTAINS') ->condition('field_tags.entity.name', 'cats'); $nids = $query->execute();</code>
加载实体field_tags
field_tags.entity.name
执行查询后,使用这些功能加载实体:
>单实体:
<code class="language-php">$query = \Drupal::entityQuery('node') ->condition('status', 1) ->condition('changed', REQUEST_TIME, '<'); $group = $query->orConditionGroup() ->condition('title', 'cat', 'CONTAINS') ->condition('field_tags.entity.name', 'cats'); $nids = $query->condition($group)->execute();</code>
多个实体:orConditionGroup
andConditionGroup
结论
Drupal 8的实体查询API对其前任提供了重大改进。 其面向对象的方法和灵活条件方法使开发人员能够构建复杂的实体查询。 记住要利用依赖注入以进行更好的代码实践。
以上是Drupal 8版本的EntityFieldQuery的详细内容。更多信息请关注PHP中文网其他相关文章!