| @@ 390-407 (lines=18) @@ | ||
| 387 | /* Add a discriminator value if the embedded document is not mapped |
|
| 388 | * explicitly to a targetDocument class. |
|
| 389 | */ |
|
| 390 | if ( ! isset($embeddedMapping['targetDocument'])) { |
|
| 391 | $discriminatorField = $embeddedMapping['discriminatorField']; |
|
| 392 | $discriminatorValue = isset($embeddedMapping['discriminatorMap']) |
|
| 393 | ? array_search($class->name, $embeddedMapping['discriminatorMap']) |
|
| 394 | : $class->name; |
|
| 395 | ||
| 396 | /* If the discriminator value was not found in the map, use the full |
|
| 397 | * class name. In the future, it may be preferable to throw an |
|
| 398 | * exception here (perhaps based on some strictness option). |
|
| 399 | * |
|
| 400 | * @see DocumentManager::createDBRef() |
|
| 401 | */ |
|
| 402 | if ($discriminatorValue === false) { |
|
| 403 | $discriminatorValue = $class->name; |
|
| 404 | } |
|
| 405 | ||
| 406 | $embeddedDocumentValue[$discriminatorField] = $discriminatorValue; |
|
| 407 | } |
|
| 408 | ||
| 409 | /* If the class has a discriminator (field and value), use it. A child |
|
| 410 | * class that is not defined in the discriminator map may only have a |
|
| @@ 741-758 (lines=18) @@ | ||
| 738 | /* Add a discriminator value if the referenced document is not mapped |
|
| 739 | * explicitly to a targetDocument class. |
|
| 740 | */ |
|
| 741 | if (! isset($referenceMapping['targetDocument'])) { |
|
| 742 | $discriminatorField = $referenceMapping['discriminatorField']; |
|
| 743 | $discriminatorValue = isset($referenceMapping['discriminatorMap']) |
|
| 744 | ? array_search($class->name, $referenceMapping['discriminatorMap']) |
|
| 745 | : $class->name; |
|
| 746 | ||
| 747 | /* If the discriminator value was not found in the map, use the full |
|
| 748 | * class name. In the future, it may be preferable to throw an |
|
| 749 | * exception here (perhaps based on some strictness option). |
|
| 750 | * |
|
| 751 | * @see PersistenceBuilder::prepareEmbeddedDocumentValue() |
|
| 752 | */ |
|
| 753 | if ($discriminatorValue === false) { |
|
| 754 | $discriminatorValue = $class->name; |
|
| 755 | } |
|
| 756 | ||
| 757 | $reference[$discriminatorField] = $discriminatorValue; |
|
| 758 | } |
|
| 759 | ||
| 760 | return $reference; |
|
| 761 | } |
|