function ViewsQueryAlter::moveEntityTable
Moves a 'workspace_association' table to appear before the given alias.
Because Workspace chains possibly pre-existing tables onto the 'workspace_association' table, we have to ensure that the 'workspace_association' table appears in the query before the alias it's chained on or the SQL is invalid.
Parameters
\Drupal\views\Plugin\views\query\Sql $query: The SQL query object.
string $workspace_association_table: The alias of the 'workspace_association' table.
string $alias: The alias of the table it needs to appear before.
2 calls to ViewsQueryAlter::moveEntityTable()
- ViewsQueryAlter::alterQueryForEntityType in core/
modules/ workspaces/ src/ ViewsQueryAlter.php  - Alters the entity type tables for a Views query.
 - ViewsQueryAlter::ensureRevisionTable in core/
modules/ workspaces/ src/ ViewsQueryAlter.php  - Adds the revision table of an entity type to a query object.
 
File
- 
              core/
modules/ workspaces/ src/ ViewsQueryAlter.php, line 421  
Class
- ViewsQueryAlter
 - Defines a class for altering views queries.
 
Namespace
Drupal\workspacesCode
protected function moveEntityTable(Sql $query, $workspace_association_table, $alias) {
  $table_queue =& $query->getTableQueue();
  $keys = array_keys($table_queue);
  $current_index = array_search($workspace_association_table, $keys);
  $index = array_search($alias, $keys);
  // If it's already before our table, we don't need to move it, as we could
  // accidentally move it forward.
  if ($current_index < $index) {
    return;
  }
  $splice = [
    $workspace_association_table => $table_queue[$workspace_association_table],
  ];
  unset($table_queue[$workspace_association_table]);
  // Now move the item to the proper location in the array. Don't use
  // array_splice() because that breaks indices.
  $table_queue = array_slice($table_queue, 0, $index, TRUE) + $splice + array_slice($table_queue, $index, NULL, TRUE);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.