|
@@ 710-735 (lines=26) @@
|
| 707 |
|
$storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null; |
| 708 |
|
$keys = []; |
| 709 |
|
|
| 710 |
|
switch ($storeAs) { |
| 711 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_ID: |
| 712 |
|
$this->query[$mapping['name']] = $reference; |
| 713 |
|
return $this; |
| 714 |
|
break; |
| 715 |
|
|
| 716 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_REF: |
| 717 |
|
$keys = ['id' => true]; |
| 718 |
|
break; |
| 719 |
|
|
| 720 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF: |
| 721 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB: |
| 722 |
|
$keys = ['$ref' => true, '$id' => true, '$db' => true]; |
| 723 |
|
|
| 724 |
|
if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) { |
| 725 |
|
unset($keys['$db']); |
| 726 |
|
} |
| 727 |
|
|
| 728 |
|
if (isset($mapping['targetDocument'])) { |
| 729 |
|
unset($keys['$ref'], $keys['$db']); |
| 730 |
|
} |
| 731 |
|
break; |
| 732 |
|
|
| 733 |
|
default: |
| 734 |
|
throw new \InvalidArgumentException("Reference type {$storeAs} is invalid."); |
| 735 |
|
} |
| 736 |
|
|
| 737 |
|
foreach ($keys as $key => $value) { |
| 738 |
|
$this->query[$mapping['name']]['$elemMatch'][$key] = $reference[$key]; |
|
@@ 1135-1160 (lines=26) @@
|
| 1132 |
|
$storeAs = array_key_exists('storeAs', $mapping) ? $mapping['storeAs'] : null; |
| 1133 |
|
$keys = []; |
| 1134 |
|
|
| 1135 |
|
switch ($storeAs) { |
| 1136 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_ID: |
| 1137 |
|
$this->query[$mapping['name']] = $reference; |
| 1138 |
|
return $this; |
| 1139 |
|
break; |
| 1140 |
|
|
| 1141 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_REF: |
| 1142 |
|
$keys = ['id' => true]; |
| 1143 |
|
break; |
| 1144 |
|
|
| 1145 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF: |
| 1146 |
|
case ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB: |
| 1147 |
|
$keys = ['$ref' => true, '$id' => true, '$db' => true]; |
| 1148 |
|
|
| 1149 |
|
if ($storeAs === ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF) { |
| 1150 |
|
unset($keys['$db']); |
| 1151 |
|
} |
| 1152 |
|
|
| 1153 |
|
if (isset($mapping['targetDocument'])) { |
| 1154 |
|
unset($keys['$ref'], $keys['$db']); |
| 1155 |
|
} |
| 1156 |
|
break; |
| 1157 |
|
|
| 1158 |
|
default: |
| 1159 |
|
throw new \InvalidArgumentException("Reference type {$storeAs} is invalid."); |
| 1160 |
|
} |
| 1161 |
|
|
| 1162 |
|
foreach ($keys as $key => $value) { |
| 1163 |
|
$this->query[$mapping['name'] . '.' . $key] = $reference[$key]; |