File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -308,21 +308,37 @@ protected function newClassMetadataInstance($className)
308308 *
309309 * @param ClassMetadata $metadata
310310 *
311+ * @return void
312+ *
311313 * @throws MappingException
312314 */
313315 private function populateDiscriminatorValue (ClassMetadata $ metadata )
314316 {
315- if (! $ metadata ->discriminatorValue && $ metadata ->discriminatorMap ) {
316- foreach ($ metadata ->discriminatorMap as $ discriminatorValue => $ discriminatorClass ) {
317- if ($ metadata ->name === $ this ->getMetadataFor ($ discriminatorClass )->getName ()) {
318- $ metadata ->discriminatorValue = $ discriminatorValue ;
317+ if ($ metadata ->discriminatorValue
318+ || ! $ metadata ->discriminatorMap
319+ || $ metadata ->isMappedSuperclass
320+ || $ metadata ->reflClass ->isAbstract ()
321+ ) {
322+ return ;
323+ }
319324
320- break ;
321- }
325+ foreach ($ metadata ->discriminatorMap as $ discriminatorValue => $ discriminatorClass ) {
326+ if ($ discriminatorClass === $ metadata ->name ) {
327+ $ metadata ->discriminatorValue = $ discriminatorValue ;
328+
329+ return ;
322330 }
331+ }
332+
333+ foreach ($ metadata ->discriminatorMap as $ discriminatorValue => $ discriminatorClass ) {
334+ if ($ metadata ->name === $ this ->getMetadataFor ($ discriminatorClass )->getName ()) {
335+ $ metadata ->discriminatorValue = $ discriminatorValue ;
323336
324- //throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
337+ return ;
338+ }
325339 }
340+
341+ throw MappingException::mappedClassNotPartOfDiscriminatorMap ($ metadata ->name , $ metadata ->rootEntityName );
326342 }
327343
328344 /**
You can’t perform that action at this time.
0 commit comments