diff options
-rw-r--r-- | modules/field/modules/field_sql_storage/field_sql_storage.module | 2 | ||||
-rw-r--r-- | modules/simpletest/tests/entity_query.test | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.module b/modules/field/modules/field_sql_storage/field_sql_storage.module index 10bae64b5..695561624 100644 --- a/modules/field/modules/field_sql_storage/field_sql_storage.module +++ b/modules/field/modules/field_sql_storage/field_sql_storage.module @@ -493,7 +493,7 @@ function field_sql_storage_field_storage_query(EntityFieldQuery $query) { $select_query->fields($table_alias, array('entity_type', 'entity_id', 'revision_id', 'bundle')); $field_base_table = $table_alias; } - if ($field['cardinality'] != 1) { + if ($field['cardinality'] != 1 || $field['translatable']) { $select_query->distinct(); } } diff --git a/modules/simpletest/tests/entity_query.test b/modules/simpletest/tests/entity_query.test index 3c53eae47..ec951f8e2 100644 --- a/modules/simpletest/tests/entity_query.test +++ b/modules/simpletest/tests/entity_query.test @@ -1075,6 +1075,45 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase { } /** + * Tests querying translatable fields. + */ + function testEntityFieldQueryTranslatable() { + + // Make a test field translatable AND cardinality one. + $this->fields[0]['translatable'] = TRUE; + $this->fields[0]['cardinality'] = 1; + field_update_field($this->fields[0]); + field_test_entity_info_translatable('test_entity', TRUE); + drupal_static_reset('field_available_languages'); + + // Create more items with different languages. + $entity = new stdClass(); + $entity->ftid = 1; + $entity->ftvid = 1; + $entity->fttype = 'test_bundle'; + + // Set fields in two languages with one field value. + foreach (array(LANGUAGE_NONE, 'en') as $langcode) { + $entity->{$this->field_names[0]}[$langcode][0]['value'] = 1234; + } + + field_attach_update('test_entity', $entity); + + // Look up number of results when querying a single entity with multilingual + // field values. + $query = new EntityFieldQuery(); + $query_count = $query + ->entityCondition('entity_type', 'test_entity') + ->entityCondition('bundle', 'test_bundle') + ->entityCondition('entity_id', '1') + ->fieldCondition($this->fields[0]) + ->count() + ->execute(); + + $this->assertEqual($query_count, 1, t("Count on translatable cardinality one field is correct.")); + } + + /** * Tests field meta conditions. */ function testEntityFieldQueryMetaConditions() { |