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 | |