DatabaseTestHooks.php

Namespace

Drupal\database_test\Hook

File

core/modules/system/tests/modules/database_test/src/Hook/DatabaseTestHooks.php

View source
<?php

declare (strict_types=1);
namespace Drupal\database_test\Hook;

use Drupal\Core\Database\Query\AlterableInterface;
use Drupal\Core\Hook\Attribute\Hook;

/**
 * Hook implementations for database_test.
 */
class DatabaseTestHooks {
    
    /**
     * Implements hook_query_alter().
     */
    public function queryAlter(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.
     */
    public function queryDatabaseTestAlterRemoveRangeAlter(AlterableInterface $query) {
        $query->range();
    }

}

Classes

Title Deprecated Summary
DatabaseTestHooks Hook implementations for database_test.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.