diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMultiValueBasefield.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMultiValueBasefield.php new file mode 100644 index 0000000..931fb6d --- /dev/null +++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMultiValueBasefield.php @@ -0,0 +1,44 @@ +setCardinality(2); + + return $fields; + } + +} diff --git a/core/modules/views/src/EntityViewsData.php b/core/modules/views/src/EntityViewsData.php index 8a9a61e..54eb3ca 100644 --- a/core/modules/views/src/EntityViewsData.php +++ b/core/modules/views/src/EntityViewsData.php @@ -247,15 +247,6 @@ public function getViewsData() { // table. $entity_keys = $this->entityType->getKeys(); $duplicate_fields = array_intersect_key($entity_keys, array_flip(['id', 'revision', 'bundle'])); - // Make note of some information so that table joins can be applied for - // base fields that have dedicated tables. - $dedicated_data_tables = []; - foreach ($field_definitions as $field_name => $field_definition) { - $storage_definition = $field_definition->getFieldStorageDefinition(); - if ($revisionable && $storage_definition->isMultiple()) { - $dedicated_data_tables[] = $table_mapping->getFieldTableName($field_name); - } - } // Iterate over each table we have so far and collect field data for each. // Based on whether the field is in the field_definitions provided by the // entity manager. @@ -277,7 +268,7 @@ public function getViewsData() { foreach ($field_definitions as $field_definition) { if ($table_mapping->requiresDedicatedTableStorage($field_definition->getFieldStorageDefinition())) { $table = $table_mapping->getDedicatedDataTableName($field_definition->getFieldStorageDefinition()); - + $data[$table]['table']['group'] = $this->entityType->getLabel(); // : $this->t('@entity_type revision', ['@entity_type' => $this->entityType->getLabel()]); $data[$table]['table']['provider'] = $this->entityType->getProvider(); diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_multivalue_basefield.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_multivalue_basefield.yml new file mode 100644 index 0000000..478071d --- /dev/null +++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_multivalue_basefield.yml @@ -0,0 +1,45 @@ +langcode: en +status: true +dependencies: + module: + - entity_test +id: test_entity_multivalue_basefield +label: '' +module: views +description: '' +tag: '' +base_table: entity_test_multivalue_basefield +base_field: id +core: '8' +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + fields: + id: + id: id + table: entity_test_multivalue_basefield + field: nid + relationship: none + plugin_id: field + entity_type: entity_test_multivalue_basefield + entity_field: id + name: + id: name + table: entity_test_multivalue_basefield__name + field: name + plugin_id: field + entity_type: entity_test_multivalue_basefield + entity_field: name + defaults: + fields: false + filters: false + sorts: + id: + id: id + table: entity_test_multivalue_basefield + field: id + order: asc diff --git a/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataWithMultivalueBasefieldTest.php b/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataWithMultivalueBasefieldTest.php new file mode 100644 index 0000000..7495fcc --- /dev/null +++ b/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataWithMultivalueBasefieldTest.php @@ -0,0 +1,52 @@ +installEntitySchema('entity_test_multivalue_basefield'); + } + + public function testView() { + EntityTestMultiValueBasefield::create([ + 'name' => 'test', + ])->save(); + EntityTestMultiValueBasefield::create([ + 'name' => ['test2', 'test3'], + ])->save(); + + $view = Views::getView('test_entity_multivalue_basefield'); + $view->execute(); + $this->assertIdenticalResultset($view, [ + ['name' => ['test']], + ['name' => ['test2', 'test3']], + ], ['name' => 'name']); + } + + +} diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php index 05a9098..d5675a6 100644 --- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php +++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php @@ -761,7 +761,7 @@ public function testRevisionTableFields() { return 'entity_test_mulrev__string'; } }); - + $table_mapping->expects($this->any()) ->method('getDedicatedRevisionTableName') ->willReturnCallback(function (BaseFieldDefinition $base_field) {