You are here

database_test.module in Drupal 9

Database test module.

File

core/modules/system/tests/modules/database_test/database_test.module
View source
<?php

/**
 * @file
 * Database test module.
 */
use Drupal\Core\Database\Query\AlterableInterface;

/**
 * Implements hook_query_alter().
 */
function database_test_query_alter(AlterableInterface $query) {
  if ($query
    ->hasTag('database_test_alter_add_range')) {
    $query
      ->range(0, 2);
  }
  if ($query
    ->hasTag('database_test_alter_add_join')) {
    $people_alias = $query
      ->join('test', 'people', "[test_task].[pid] = [%alias].[id]");
    $query
      ->addField($people_alias, 'name', 'name');
    $query
      ->condition($people_alias . '.id', 2);
  }
  if ($query
    ->hasTag('database_test_alter_change_conditional')) {
    $conditions =& $query
      ->conditions();
    $conditions[0]['value'] = 2;
  }
  if ($query
    ->hasTag('database_test_alter_change_fields')) {
    $fields =& $query
      ->getFields();
    unset($fields['age']);
  }
  if ($query
    ->hasTag('database_test_alter_change_expressions')) {
    $expressions =& $query
      ->getExpressions();
    $expressions['double_age']['expression'] = '[age]*3';
  }
}

/**
 * Implements hook_query_TAG_alter().
 *
 * Called by DatabaseTestCase::testAlterRemoveRange.
 */
function database_test_query_database_test_alter_remove_range_alter(AlterableInterface $query) {
  $query
    ->range();
}