原文地址:
https://docs.acquia.com/articles/drupal-8-load-and-query-entities-lab
总结
本课我们看到了在 Drupal 8 中如何查询和加载实体。Drupal 8 把 7 中的 EntityFieldQuery 类进行了大修,提供了查询内容实体和配置实体的健壮 API。我们只看了查询内容实体,但查询配置实体用法是相同的。
我们也看到了怎样通过查询实体得到的 ID 加载实体的方法。接下来我们会看下 Drupal 8 中如何定义内容实体类型,要复习下这个在 Drupal 7 是怎么做的,请查看 Sitepoint articles。
完整步骤:
- 在内容类型 Article 内追加 5 个节点(node),至少一个标题为”ipsum lorem“
- 拷贝课程 1 中的 page_example 模块,重命名为 query_example。
- 重命名相应的文件、术语、方法和类。
- 改变 PageExampleController 类
a. 创建 simpleQuery() 方法,返回 ID 列表。
b. 创建方法 basicQuery(),返回 simpleQuery() 产生的数组。
c. 创建方法 intermediateQuery(),进行条件查询测试。
d. 创建方法 conditionalStaticQuery(),返回 intermediateQuery() 产生的数组。
e. 创建方法 advancedQuery(),进行 OR 条件测试。
f. 创建方法 conditionalGroupQuery(),返回 advancedQuery() 方法数组。
g. 编辑 YAML 路由文件,为上面 3 种查询追加响应路径。
你可以拷贝 QueryExampleController.php 代码,避免手动创建每个方法。
额外练习
创建个页面,使用 entity.manager 和 entity.query 服务显示 simpleQuery() 返回的那些节点的 teaser。