@@ 2114-2147 (lines=34) @@ | ||
2111 | * |
|
2112 | * @return void |
|
2113 | */ |
|
2114 | private function cascadeRefresh($entity, array &$visited) |
|
2115 | { |
|
2116 | $class = $this->em->getClassMetadata(get_class($entity)); |
|
2117 | ||
2118 | $associationMappings = array_filter( |
|
2119 | $class->associationMappings, |
|
2120 | function ($assoc) { return $assoc['isCascadeRefresh']; } |
|
2121 | ); |
|
2122 | ||
2123 | foreach ($associationMappings as $assoc) { |
|
2124 | $relatedEntities = $class->reflFields[$assoc['fieldName']]->getValue($entity); |
|
2125 | ||
2126 | switch (true) { |
|
2127 | case ($relatedEntities instanceof PersistentCollection): |
|
2128 | // Unwrap so that foreach() does not initialize |
|
2129 | $relatedEntities = $relatedEntities->unwrap(); |
|
2130 | // break; is commented intentionally! |
|
2131 | ||
2132 | case ($relatedEntities instanceof Collection): |
|
2133 | case (is_array($relatedEntities)): |
|
2134 | foreach ($relatedEntities as $relatedEntity) { |
|
2135 | $this->doRefresh($relatedEntity, $visited); |
|
2136 | } |
|
2137 | break; |
|
2138 | ||
2139 | case ($relatedEntities !== null): |
|
2140 | $this->doRefresh($relatedEntities, $visited); |
|
2141 | break; |
|
2142 | ||
2143 | default: |
|
2144 | // Do nothing |
|
2145 | } |
|
2146 | } |
|
2147 | } |
|
2148 | ||
2149 | /** |
|
2150 | * Cascades a detach operation to associated entities. |
|
@@ 2157-2190 (lines=34) @@ | ||
2154 | * |
|
2155 | * @return void |
|
2156 | */ |
|
2157 | private function cascadeDetach($entity, array &$visited) |
|
2158 | { |
|
2159 | $class = $this->em->getClassMetadata(get_class($entity)); |
|
2160 | ||
2161 | $associationMappings = array_filter( |
|
2162 | $class->associationMappings, |
|
2163 | function ($assoc) { return $assoc['isCascadeDetach']; } |
|
2164 | ); |
|
2165 | ||
2166 | foreach ($associationMappings as $assoc) { |
|
2167 | $relatedEntities = $class->reflFields[$assoc['fieldName']]->getValue($entity); |
|
2168 | ||
2169 | switch (true) { |
|
2170 | case ($relatedEntities instanceof PersistentCollection): |
|
2171 | // Unwrap so that foreach() does not initialize |
|
2172 | $relatedEntities = $relatedEntities->unwrap(); |
|
2173 | // break; is commented intentionally! |
|
2174 | ||
2175 | case ($relatedEntities instanceof Collection): |
|
2176 | case (is_array($relatedEntities)): |
|
2177 | foreach ($relatedEntities as $relatedEntity) { |
|
2178 | $this->doDetach($relatedEntity, $visited); |
|
2179 | } |
|
2180 | break; |
|
2181 | ||
2182 | case ($relatedEntities !== null): |
|
2183 | $this->doDetach($relatedEntities, $visited); |
|
2184 | break; |
|
2185 | ||
2186 | default: |
|
2187 | // Do nothing |
|
2188 | } |
|
2189 | } |
|
2190 | } |
|
2191 | ||
2192 | /** |
|
2193 | * Cascades a merge operation to associated entities. |