diff --git a/core/modules/user/src/UserViewsData.php b/core/modules/user/src/UserViewsData.php index e2229112eb..6a92ca8c7c 100644 --- a/core/modules/user/src/UserViewsData.php +++ b/core/modules/user/src/UserViewsData.php @@ -220,34 +220,20 @@ public function getViewsData() { ), ); - $data['user__roles']['table']['group'] = $this->t('User'); + // Alter the user roles target_id column. + $data['user__roles']['roles_target_id']['field']['id'] = 'user_roles'; + $data['user__roles']['roles_target_id']['field']['no group by'] = TRUE; - $data['user__roles']['table']['join'] = array( - 'users_field_data' => array( - 'left_field' => 'uid', - 'field' => 'entity_id', - ), - ); + $data['user__roles']['roles_target_id']['filter']['id'] = 'user_roles'; + $data['user__roles']['roles_target_id']['filter']['allow empty'] = TRUE; - $data['user__roles']['roles_target_id'] = array( - 'title' => $this->t('Roles'), - 'help' => $this->t('Roles that a user belongs to.'), - 'field' => array( - 'id' => 'user_roles', - 'no group by' => TRUE, - ), - 'filter' => array( - 'id' => 'user_roles', - 'allow empty' => TRUE, - ), - 'argument' => array( - 'id' => 'user__roles_rid', - 'name table' => 'role', - 'name field' => 'name', - 'empty field name' => $this->t('No role'), - 'zero is null' => TRUE, - 'numeric' => TRUE, - ), + $data['user__roles']['roles_target_id']['argument'] = array( + 'id' => 'user__roles_rid', + 'name table' => 'role', + 'name field' => 'name', + 'empty field name' => $this->t('No role'), + 'zero is null' => TRUE, + 'numeric' => TRUE, ); $data['user__roles']['permission'] = array( diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php index 131259e589..5a70eca30b 100644 --- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php +++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php @@ -470,7 +470,7 @@ public function testBaseTableFields() { ['description', ['value' => 'description__value', 'format' => 'description__format']], ['homepage', ['value' => 'homepage']], ['user_id', ['target_id' => 'user_id']], - ['string', ['value' => 'value']], + ['string', ['value' => 'string_value']], ]); $table_mapping->expects($this->any()) ->method('getFieldNames') @@ -531,8 +531,8 @@ public function testBaseTableFields() { // field should reflect what the column mapping is using for multi-value // base fields NOT just the field name. The actual column name returned from // mappings in the test mocks is 'value'. - $this->assertStringField($data['entity_test__string']['value']); - $this->assertField($data['entity_test__string']['value'], 'string'); + $this->assertStringField($data['entity_test__string']['string_value']); + $this->assertField($data['entity_test__string']['string_value'], 'string'); $this->assertEquals([ 'left_field' => 'id', 'field' => 'entity_id', @@ -596,7 +596,7 @@ public function testDataTableFields() { ['description', ['value' => 'description__value', 'format' => 'description__format']], ['homepage', ['value' => 'homepage']], ['user_id', ['target_id' => 'user_id']], - ['string', ['value' => 'value']], + ['string', ['value' => 'string_value']], ]); $table_mapping->expects($this->any()) ->method('getFieldNames') @@ -686,8 +686,8 @@ public function testDataTableFields() { $this->assertEquals('users_field_data', $relationship['base']); $this->assertEquals('uid', $relationship['base field']); - $this->assertStringField($data['entity_test_mul__string']['value']); - $this->assertField($data['entity_test_mul__string']['value'], 'string'); + $this->assertStringField($data['entity_test_mul__string']['string_value']); + $this->assertField($data['entity_test_mul__string']['string_value'], 'string'); $this->assertEquals([ 'left_field' => 'id', 'field' => 'entity_id', @@ -746,7 +746,7 @@ public function testRevisionTableFields() { ['homepage', ['value' => 'homepage']], ['user_id', ['target_id' => 'user_id']], ['revision_id', ['value' => 'revision_id']], - ['string', ['value' => 'value']], + ['string', ['value' => 'string_value']], ]); $table_mapping->expects($this->any()) ->method('getFieldNames') @@ -871,8 +871,8 @@ public function testRevisionTableFields() { $this->assertEquals('users_field_data', $relationship['base']); $this->assertEquals('uid', $relationship['base field']); - $this->assertStringField($data['entity_test_mulrev__string']['value']); - $this->assertField($data['entity_test_mulrev__string']['value'], 'string'); + $this->assertStringField($data['entity_test_mulrev__string']['string_value']); + $this->assertField($data['entity_test_mulrev__string']['string_value'], 'string'); $this->assertEquals([ 'left_field' => 'id', 'field' => 'entity_id', @@ -883,8 +883,8 @@ public function testRevisionTableFields() { ]], ], $data['entity_test_mulrev__string']['table']['join']['entity_test_mulrev_property_data']); - $this->assertStringField($data['entity_test_mulrev_revision__string']['value']); - $this->assertField($data['entity_test_mulrev_revision__string']['value'], 'string'); + $this->assertStringField($data['entity_test_mulrev_revision__string']['string_value']); + $this->assertField($data['entity_test_mulrev_revision__string']['string_value'], 'string'); $this->assertEquals([ 'left_field' => 'revision_id', 'field' => 'entity_id',