How to modify an existing views join using hook_views_query_alter

You, DrupalDrupal theme
Back

This will let you alter the query before you execute the query so you have a chance to request a different set of data than originally configured within the views.

API : hook_views_query_alter

If you are looking for a way to alter where conditions here is a great guide from Chapter3. Using hook_views_query_alter to alter a query.

Join queries and conditions are little different so here is how you do it.

First, check the tables that you have in your query, it could be a table alias or a table name. The following code will show you the list of tables.

$query->tables;

Then you know what table you need to alter so do the following

/**
 * Implements hook_views_query_alter().
 */
function MODULE_custom_views_query_alter(ViewExecutable $view, QueryPluginBase $query){

  if ($view->storage->get('id') === 'VIEWNAME' && $view->current_display === 'DISPLAY') {
    $query->addTag('debug');

    $table = $query->getTableInfo('MY TABLE NAME');
    $table['join']->extra = [];
    // Example
    $table = $query->getTableInfo('vehicle__field_make_model_value_0');
    $table['join']->extra[] = [
      'field' => 'title',
      'value' => 'management',
      'operator' => '!='
    ];
  }
}
© Heshan Wanigasooriya.RSS

🍪 This site does not track you.