Code Duplication    Length = 26-26 lines in 2 locations

lib/Doctrine/ODM/MongoDB/Query/Expr.php 2 locations

@@ 726-751 (lines=26) @@
723
            $reference = $this->dm->createReference($document, $mapping);
724
            $storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null;
725
726
            switch ($storeAs) {
727
                case ClassMetadataInfo::REFERENCE_STORE_AS_ID:
728
                    $this->query[$mapping['name']] = $reference;
729
                    return $this;
730
                    break;
731
732
                case ClassMetadataInfo::REFERENCE_STORE_AS_REF:
733
                    $keys = ['id' => true];
734
                    break;
735
736
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF:
737
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB:
738
                    $keys = ['$ref' => true, '$id' => true, '$db' => true];
739
740
                    if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) {
741
                        unset($keys['$db']);
742
                    }
743
744
                    if (isset($mapping['targetDocument'])) {
745
                        unset($keys['$ref'], $keys['$db']);
746
                    }
747
                    break;
748
749
                default:
750
                    throw new \InvalidArgumentException("Reference type {$storeAs} is invalid.");
751
            }
752
753
            foreach ($keys as $key => $value) {
754
                $this->query[$mapping['name']]['$elemMatch'][$key] = $reference[$key];
@@ 1150-1175 (lines=26) @@
1147
            $reference = $this->dm->createReference($document, $mapping);
1148
            $storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null;
1149
1150
            switch ($storeAs) {
1151
                case ClassMetadataInfo::REFERENCE_STORE_AS_ID:
1152
                    $this->query[$mapping['name']] = $reference;
1153
                    return $this;
1154
                    break;
1155
1156
                case ClassMetadataInfo::REFERENCE_STORE_AS_REF:
1157
                    $keys = ['id' => true];
1158
                    break;
1159
1160
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF:
1161
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB:
1162
                    $keys = ['$ref' => true, '$id' => true, '$db' => true];
1163
1164
                    if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) {
1165
                        unset($keys['$db']);
1166
                    }
1167
1168
                    if (isset($mapping['targetDocument'])) {
1169
                        unset($keys['$ref'], $keys['$db']);
1170
                    }
1171
                    break;
1172
1173
                default:
1174
                    throw new \InvalidArgumentException("Reference type {$storeAs} is invalid.");
1175
            }
1176
1177
            foreach ($keys as $key => $value) {
1178
                $this->query[$mapping['name'] . '.' . $key] = $reference[$key];