gpt4 book ai didi

Drupal View 使用关系时返回重复值

转载 作者:行者123 更新时间:2023-12-01 05:45:43 24 4
gpt4 key购买 nike

我的观点有问题。我有一个 View ,并按名称将分类术语传递给它。然后我与相关节点建立了关系。对于我的输出字段,我将返回相关的标题和相关的正文。但是,我的结果中有重复项。我已经变成了是,但相信这是在返回节点而不是相关节点上工作。任何想法如何删除重复项?

更新

下面是当我只得到标题时正在运行的查询

SELECT DISTINCT(node.nid) AS nid,
node_node_data_field_wine_company.title AS node_node_data_field_wine_company_title,
node_node_data_field_wine_company.nid AS node_node_data_field_wine_company_nid
FROM node node
LEFT JOIN content_type_wine node_data_field_wine_company ON node.vid = node_data_field_wine_company.vid
INNER JOIN node node_node_data_field_wine_company ON node_data_field_wine_company.field_wine_company_nid = node_node_data_field_wine_company.nid
LEFT JOIN term_node term_node ON node.vid = term_node.vid INNER JOIN term_data term_data ON term_node.tid = term_data.tid
WHERE term_data.name = 'test'
GROUP BY nid

看起来我应该按 node_node_data_field_wine_company_nid 分组或从那里选择不同的值。有任何想法吗?

更新

使用普通 View 可能无法实现。下面是我的设置。

我有一个名为 Region 的分类法。区域应用于名为 Wine 的自定义内容类型。
Wine 内容类型有一个指向 Company 节点类型的节点引用字段。
Company 是自定义节点类型。

我有一个列出我所有地区的 View 。单击该区域,我会将其作为参数传递给 View (术语名称)。我想从这个地区返回该地区的所有公司。

为了得到这个,我需要获得所有具有该地区的 Wine 元素。对于该地区的所有葡萄酒项目,我需要获得唯一的公司节点引用。然后我会返回这个。

一种解决方法是给每个公司一个区域来制作列表。但是我宁愿它是从葡萄酒类型中自动计算出来的。

有任何想法吗?

最佳答案

您的分析似乎是正确的,因为差异适用于“原始”节点,而不是相关节点。因此,您可以尝试“反转”您的 View 构造,从现在的“相关”节点开始,添加与现在“原始”节点的关系并根据这些节点过滤结果。最后一点是我不确定的一点,因为我不知道是否可以在通过关系拉入的节点上应用术语过滤器,但它可能值得一试。

如果事实证明通过“标准” View 功能无法获得您想要的结果,则有多种选项可以从自定义代码中操作 View ,但这需要对使用场景有更详细的了解(例如它需要使用寻呼机和类似设备)。如果看起来你需要走那条路,你可以通过描述你需要实现的目标来增强你的问题。

编辑:
至于以编程方式操作 View 的选项,您可以查看 views module hooks .对于查询结果的小调整,可以实现 hook_views_pre_render() 并在 $view->result 中操作返回的结果集直接(即,在查询执行之后)。

但是,对于更大的操作(如您的情况),可以实现 hook_views_query_alter() 并在用于返回结果集之前调整实际查询。必须注意仅更改排序或过滤条件,但保留返回数据的一般结构(例如,它仍然需要包含 View 期望的所有字段)。虽然这种方法提供了巨大的灵活性,但需要注意的是,它在以后应用于 View 的更改方面是脆弱的——如果 View 定义以一种改变构造查询的方式进行更改,则更改是在 hook_views_query_alter() 上完成的。可能不再起作用,或导致奇怪的结果。

每个 View 都会触发 View Hook ,因此在应用任何更改之前,需要检查正确的 View (并最终显示)。

关于Drupal View 使用关系时返回重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com