You are here

public function QueryTest::execute in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views/tests/modules/views_test_data/src/Plugin/views/query/QueryTest.php \Drupal\views_test_data\Plugin\views\query\QueryTest::execute()
  2. 10 core/modules/views/tests/modules/views_test_data/src/Plugin/views/query/QueryTest.php \Drupal\views_test_data\Plugin\views\query\QueryTest::execute()

Executes the query and fills the associated view object with according values.

Values to set: $view->result, $view->total_rows, $view->execute_time, $view->pager['current_page'].

$view->result should contain an array of objects. The array must use a numeric index starting at 0.

Parameters

\Drupal\views\ViewExecutable $view: The view which is executed.

Overrides QueryPluginBase::execute

File

core/modules/views/tests/modules/views_test_data/src/Plugin/views/query/QueryTest.php, line 97

Class

QueryTest
Defines a query test plugin.

Namespace

Drupal\views_test_data\Plugin\views\query

Code

public function execute(ViewExecutable $view) {
  $result = [];
  foreach ($this->allItems as $element) {

    // Run all conditions on the element, and add it to the result if they
    // match.
    $match = TRUE;
    foreach ($this->conditions as $condition) {
      $match &= $this
        ->match($element, $condition);
    }
    if ($match) {

      // If the query explicit defines fields to use, filter all others out.
      // Filter out fields
      if ($this->fields) {
        $element = array_intersect_key($element, $this->fields);
      }
      $result[] = new ResultRow($element);
    }
  }
  $this->view->result = $result;
}