Code Duplication    Length = 26-26 lines in 2 locations

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

@@ 79-104 (lines=26) @@
76
            $reference = $this->dm->createReference($document, $mapping);
77
            $storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null;
78
79
            switch ($storeAs) {
80
                case ClassMetadataInfo::REFERENCE_STORE_AS_ID:
81
                    $this->query[$mapping['name']] = $reference;
82
                    return $this;
83
                    break;
84
85
                case ClassMetadataInfo::REFERENCE_STORE_AS_REF:
86
                    $keys = ['id' => true];
87
                    break;
88
89
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF:
90
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB:
91
                    $keys = ['$ref' => true, '$id' => true, '$db' => true];
92
93
                    if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) {
94
                        unset($keys['$db']);
95
                    }
96
97
                    if (isset($mapping['targetDocument'])) {
98
                        unset($keys['$ref'], $keys['$db']);
99
                    }
100
                    break;
101
102
                default:
103
                    throw new \InvalidArgumentException("Reference type {$storeAs} is invalid.");
104
            }
105
106
            foreach ($keys as $key => $value) {
107
                $this->query[$mapping['name'] . '.' . $key] = $reference[$key];
@@ 131-156 (lines=26) @@
128
            $reference = $this->dm->createReference($document, $mapping);
129
            $storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null;
130
131
            switch ($storeAs) {
132
                case ClassMetadataInfo::REFERENCE_STORE_AS_ID:
133
                    $this->query[$mapping['name']] = $reference;
134
                    return $this;
135
                    break;
136
137
                case ClassMetadataInfo::REFERENCE_STORE_AS_REF:
138
                    $keys = ['id' => true];
139
                    break;
140
141
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF:
142
                case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB:
143
                    $keys = ['$ref' => true, '$id' => true, '$db' => true];
144
145
                    if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) {
146
                        unset($keys['$db']);
147
                    }
148
149
                    if (isset($mapping['targetDocument'])) {
150
                        unset($keys['$ref'], $keys['$db']);
151
                    }
152
                    break;
153
154
                default:
155
                    throw new \InvalidArgumentException("Reference type {$storeAs} is invalid.");
156
            }
157
158
            foreach ($keys as $key => $value) {
159
                $this->query[$mapping['name']]['$elemMatch'][$key] = $reference[$key];