| @@ 686-706 (lines=21) @@ | ||
| 683 | * @param object $document |
|
| 684 | * @param array $visited |
|
| 685 | */ |
|
| 686 | private function cascadeDetach($document, array &$visited) |
|
| 687 | { |
|
| 688 | $class = $this->dm->getClassMetadata(get_class($document)); |
|
| 689 | foreach ($class->associationsMappings as $assoc) { |
|
| 690 | if ( $assoc['cascade'] & ClassMetadata::CASCADE_DETACH == 0) { |
|
| 691 | continue; |
|
| 692 | } |
|
| 693 | $relatedDocuments = $class->reflFields[$assoc['fieldName']]->getValue($document); |
|
| 694 | if ($relatedDocuments instanceof Collection) { |
|
| 695 | if ($relatedDocuments instanceof PersistentCollection) { |
|
| 696 | // Unwrap so that foreach() does not initialize |
|
| 697 | $relatedDocuments = $relatedDocuments->unwrap(); |
|
| 698 | } |
|
| 699 | foreach ($relatedDocuments as $relatedDocument) { |
|
| 700 | $this->doDetach($relatedDocument, $visited); |
|
| 701 | } |
|
| 702 | } else if ($relatedDocuments !== null) { |
|
| 703 | $this->doDetach($relatedDocuments, $visited); |
|
| 704 | } |
|
| 705 | } |
|
| 706 | } |
|
| 707 | ||
| 708 | private function cascadeRefresh($document, &$visited) |
|
| 709 | { |
|
| @@ 708-727 (lines=20) @@ | ||
| 705 | } |
|
| 706 | } |
|
| 707 | ||
| 708 | private function cascadeRefresh($document, &$visited) |
|
| 709 | { |
|
| 710 | $class = $this->dm->getClassMetadata(get_class($document)); |
|
| 711 | foreach ($class->associationsMappings as $assoc) { |
|
| 712 | if ($assoc['cascade'] & ClassMetadata::CASCADE_REFRESH) { |
|
| 713 | $related = $class->reflFields[$assoc['fieldName']]->getValue($document); |
|
| 714 | if ($related instanceof Collection) { |
|
| 715 | if ($related instanceof PersistentCollection) { |
|
| 716 | // Unwrap so that foreach() does not initialize |
|
| 717 | $related = $related->unwrap(); |
|
| 718 | } |
|
| 719 | foreach ($related as $relatedDocument) { |
|
| 720 | $this->doRefresh($relatedDocument, $visited); |
|
| 721 | } |
|
| 722 | } else if ($related !== null) { |
|
| 723 | $this->doRefresh($related, $visited); |
|
| 724 | } |
|
| 725 | } |
|
| 726 | } |
|
| 727 | } |
|
| 728 | ||
| 729 | /** |
|
| 730 | * Get the state of a document. |
|