|
@@ 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]; |