ertttert
hook_query_alter()
методом execute()
непосредственно перед компиляцией строки запроса. Это предоставляет модулям возможность произвольной обработки запроса. Функция hook_query_alter()
принимает единственный параметр — сам объект запроса выборки.
В качестве примера работы hook_query_alter()
в модуле dbtest
выполняется изменение двух запросов. Первое изменение происходит, когда обнаруживается запрос с тегом db_test_alter_add_range
. В этом случае в запрос добавляется диапазон (0, 2). Второе изменение выполняется при обнаружении запроса с тегом db_test_alter_add_join
. В этом случае выполняется соединение таблиц test
и people
.
function dbtest_query_alter( SelectQuery $query) {// Можно добавить диапазон. if ( $query->hasTag('db_test_alter_add_range')) { $query->range(0, 2); }// Или добавить соединение. if ( $query->hasTag('db_test_alter_add_join')) { $people_alias =$query->join( 'test', 'people', "test_task.pid=people.id") ; $name_field =$query->addField( 'name', 'people', 'name') ;$query->condition( $people_alias . '.id', 2) ; } ... ?>
Всего комментариев: 0 | |