【发布时间】:2017-01-25 15:20:40
【问题描述】:
我正在开发一个包含以下已激活模块的项目:
Drupal 核心 8.2.3 数据库搜索 8.x-1.0-beta4 搜索 API 8.x-1.0-beta4 搜索 API 术语处理程序 8.x-1.0-beta4 浏览量 8.2.3
我有一个需要从站点范围搜索的搜索结果中排除的 nid 列表。搜索使用 Search API 并已使用 Views 进行设置。
数据库中的表是:“search_api_db_default_index” 我希望定位的字段是:“nid”
我无法触发 HOOK__search_api_query_alter 或 HOOK_search_api_results_alter,因此我尝试通过 HOOK_views_query_alter 操作查询。
我尝试使用以下语法的“addWhere”和“addCondition”方法:
在使用 addCondition 方法时,我尝试过
$query->addCondition('search_api_db_default_index.nid', $oneBadNid, '<>');
和
$query->addCondition('search_api_db_default_index.nid', $manyBadNids, 'NOT IN');
当使用 addWhere 方法时,我尝试过
$query->addWhere('AND', 'search_api_index_default_index.nid', $oneBadNid, '<>');
和
$query->addWhere('AND', 'search_api_index_default_index.nid', $manyBadNids, 'NOT IN');
无论我是否在字段前加上表名,搜索总是会触发以下通知:
过滤子句中的未知字段:'search_api_db_default_index.nid'。
字段名称似乎总是包含在表示单引号的 html 编码字符串中,但在提供的 table.field 参数周围使用双引号或单引号时都会发生这种情况。
我什至不确定这是否是阻止我更改查询的原因,但这是我在此过程中发现的唯一接近错误的原因。也有可能我根本不应该以书面方式定位表格,但我没有找到任何文档指导我采用正确的方法。
我将不胜感激任何对此问题的见解!谢谢!
【问题讨论】:
标签: drupal-8