function Score::query

Same name in this branch
  1. 11.x core/modules/search/src/Plugin/views/field/Score.php \Drupal\search\Plugin\views\field\Score::query()
Same name in other branches
  1. 9 core/modules/search/src/Plugin/views/sort/Score.php \Drupal\search\Plugin\views\sort\Score::query()
  2. 9 core/modules/search/src/Plugin/views/field/Score.php \Drupal\search\Plugin\views\field\Score::query()
  3. 8.9.x core/modules/search/src/Plugin/views/sort/Score.php \Drupal\search\Plugin\views\sort\Score::query()
  4. 8.9.x core/modules/search/src/Plugin/views/field/Score.php \Drupal\search\Plugin\views\field\Score::query()
  5. 10 core/modules/search/src/Plugin/views/sort/Score.php \Drupal\search\Plugin\views\sort\Score::query()
  6. 10 core/modules/search/src/Plugin/views/field/Score.php \Drupal\search\Plugin\views\field\Score::query()

Overrides SortPluginBase::query

File

core/modules/search/src/Plugin/views/sort/Score.php, line 19

Class

Score
Sort handler for sorting by search score.

Namespace

Drupal\search\Plugin\views\sort

Code

public function query() {
    // Check to see if the search filter/argument added 'score' to the table.
    // Our filter stores it as $handler->search_score -- and we also
    // need to check its relationship to make sure that we're using the same
    // one or obviously this won't work.
    foreach ([
        'filter',
        'argument',
    ] as $type) {
        foreach ($this->view->{$type} as $handler) {
            if (isset($handler->search_score) && $handler->relationship == $this->relationship) {
                $this->query
                    ->addOrderBy(NULL, NULL, $this->options['order'], $handler->search_score);
                $this->tableAlias = $handler->tableAlias;
                return;
            }
        }
    }
    // Do nothing if there is no filter/argument in place. There is no way
    // to sort on scores.
}

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