首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用表达式查询Drupal 8内容类型

使用表达式查询Drupal 8内容类型
EN

Stack Overflow用户
提问于 2022-03-09 19:49:23
回答 1查看 829关注 0票数 0

简而言之,我需要在运行表达式时执行实体查询。我找不到任何办法来完成这件事。我想应该有两种方法。

  1. 一个带有表达式的实体查询--当我尝试这样做时,任何表达式都无法工作
  2. 原始DB查询,但我不熟悉如何连接与所需节点的内容类型相关的所有字段。

下面是我需要完成的一个简单例子

代码语言:javascript
复制
X = content type
y = field on x content type
z = field on x content type
My expression below is just an example, but need to run this in the database query

- Select y and z from x
- if x > y return node id

任何帮助都会很好。这将在一个非常大的数据集上运行,试图找到在数据库中执行查询的最快方法。

EN

回答 1

Stack Overflow用户

发布于 2022-03-17 03:55:54

使用实体查询无法比较两个字段。

为此,您可能需要使用更低级别的动态查询及其哪里方法:

代码语言:javascript
复制
$query = \Drupal::database()->select('node_field_data', 'n');
$query->condition('n.type', 'x');                               // to get content type x
$query->innerJoin('node__field_y', 'y', 'y.entity_id = n.nid'); // join with field y
$query->innerJoin('node__field_z', 'z', 'z.entity_id = n.nid'); // join with field z
$query->where('z.field_z_value > y.field_y_value');             // your condition
$query->addField('n', 'nid');                                   // get node id in result
$results = $query->execute()->fetchAllKeyed(0, 0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71415235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档