Drupal 8-使用hook_views_query_alter函数加入自定义SQL查询

时间:2019-12-21 21:30:10

标签: sql drupal drupal-8 drupal-views

我有一个视图过滤器条件,其中包括邮政编码和Miles字段。邮编是文本框,而英里是单选按钮。 Miles字段的配置如下所示:

enter image description here

输入邮政编码和英里后,应调用以下查询:

@from_zip应该来自邮政编码字段 @miles应该来自Miles字段

select
 pst.ProgramID,pst.name,z.from_zip,pst.zipcode,z.miles
 from program_search_temp pst
 left join zipmaster_xref z
 on pst.zipcode = z.to_zip
 where z.from_zip = @from_zip and z.miles <= @miles
 order by miles

我加入了以下自定义查询:

function hook_views_query_alter($view, $query){
if ($view->id() == 'program-search')
{   
 $definition = [
  'table' => 'program_search_temp',
  'field' => 'zipcode',
  'left_table' => 'zipmaster_xref',
  'left_field' => 'to_zip',
];
$join = Drupal::service('plugin.manager.views.join')->createInstance('standard', $definition);
$query->addRelationship('zip_master_field_data', $join, 'program_search_module'); 
}
}

但是我不确定如何添加参数。同样,此查询不会被调用。有帮助吗?

0 个答案:

没有答案