function WorkspaceAssociationRevisionTableUpdateTest::getOldAssociatedInitialRevisions

Replicates the old getAssociatedInitialRevisions logic from 11.x.

1 call to WorkspaceAssociationRevisionTableUpdateTest::getOldAssociatedInitialRevisions()
WorkspaceAssociationRevisionTableUpdateTest::testWorkspaceAssociationRevisionTableUpdate in core/modules/workspaces/tests/src/Functional/Update/WorkspaceAssociationRevisionTableUpdateTest.php
Tests that the workspace_association_revision table is created and populated.

File

core/modules/workspaces/tests/src/Functional/Update/WorkspaceAssociationRevisionTableUpdateTest.php, line 142

Class

WorkspaceAssociationRevisionTableUpdateTest
Tests the upgrade path for the workspace_association_revision table.

Namespace

Drupal\Tests\workspaces\Functional\Update

Code

private function getOldAssociatedInitialRevisions($connection, $entity_type_manager, $workspace_id, $entity_type_id, array $entity_ids = []) : array {
  /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */
  $storage = $entity_type_manager->getStorage($entity_type_id);
  $entity_type = $storage->getEntityType();
  $table_mapping = $storage->getTableMapping();
  $id_field = $table_mapping->getColumnNames($entity_type->getKey('id'))['value'];
  $revision_id_field = $table_mapping->getColumnNames($entity_type->getKey('revision'))['value'];
  $query = $connection->select($entity_type->getBaseTable(), 'base');
  $query->leftJoin($entity_type->getRevisionTable(), 'revision', "base.{$revision_id_field} = revision.{$revision_id_field}");
  $query->fields('base', [
    $revision_id_field,
    $id_field,
  ])
    ->condition("revision.workspace", $workspace_id, '=')
    ->orderBy("base.{$revision_id_field}", 'ASC');
  // Restrict the result to a set of entity ID's if provided.
  if ($entity_ids) {
    $query->condition("base.{$id_field}", $entity_ids, 'IN');
  }
  $result = $query->execute()
    ->fetchAllKeyed();
  return $result;
}

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