Skip to main content

Add JOIN tables in views query alter in Drupal 8

How to add join condition in views programmatically in Drupal 8?

use $query->queueTable to implement joins.

function hook_views_query_alterViewExecutable $views, QueryPluginBase $query) {
  $query->queueTable('node__field_accounts', "node_field_data", NULL, 'node__field_accounts');
  $query->addWhere($where_last_key, 'node__field_accounts.field_accounts_target_id', 
$account_values['target_id'], 'IN');
}


Method definition
Sql::queueTable($table, $relationship = NULL, JoinPluginBase $join = NULL, $alias = NULL)


To use INNER JOIN

$configuration = [
      'type' => 'INNER',
      'table' => 'user__field_region',
      'field' => 'entity_id',
      'left_table' => 'users_field_data',
      'left_field' => 'uid',
      'operator' => '=',
    ];
    $join = Views::pluginManager('join')
      ->createInstance('standard', $configuration);
    $query->queueTable('user__field_region', 'users_field_data', $join , 'user__field_region');

Comments

Popular posts from this blog

Add JS to the bottom of the page in Drupal 7

How to add JS at bottom of a particular page in Drupal 7 Step 1: Get the page id. In case of front page "is_front"  Step 2: In template.php file of your theme add the below code : function illume_preprocess_page(&$variables) { if ($variables['is_front']) { drupal_add_js(path_to_theme().'/js/util.js', array('type' => 'file', 'scope' => 'footer')); drupal_add_js(path_to_theme().'/js/main.js', array('type' => 'file', 'scope' => 'footer')); drupal_add_js(path_to_theme().'/js/slideimage.js', array('type' => 'file', 'scope' => 'footer')); $variables['bottom_scripts'] = drupal_get_js(); } } This way you can add JS file using drupal_add_js() and define scope as footer. Step 3: Now you can use bottom_script variable to the page tpl file where you want to add JS print $bottom_scripts;

Use Case Diagram for Online Book Store

Occurrences of each letter of alphabet in the text

Program to print a table indicating the no. of occurrences of each letter of alphabet in the text entered as command line arguments. #include<iostream> #include<string> using namespace std; int main(int argc, char *argv[]) { string str=""; static int alphabet[26]; int x; cout<<"\n\n Command-Line Argument\n"; for(int i=0;i<argc;i++) { cout<<"\n "<<argv[i]; str+=argv[i]; } for(int i=0;i<str.length();i++) { if(str[i]>='A' && str[i]<='Z') { x=((int)str[i])-65; alphabet[x]++; } else if(str[i]>='a' && str[i]<='z') { x=((int)str[i])-97; alphabet[x]++; } } //Displaying No. of occurrences of each alphabets in the command line argument cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Alphabet No. of Occurrences\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"; for(int i=0;i<26;i++)...