File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -304,21 +304,37 @@ protected function newClassMetadataInstance($className)
304304 *
305305 * @param ClassMetadata $metadata
306306 *
307+ * @return void
308+ *
307309 * @throws MappingException
308310 */
309311 private function populateDiscriminatorValue (ClassMetadata $ metadata )
310312 {
311- if (! $ metadata ->discriminatorValue && $ metadata ->discriminatorMap ) {
312- foreach ($ metadata ->discriminatorMap as $ discriminatorValue => $ discriminatorClass ) {
313- if ($ metadata ->name === $ this ->getMetadataFor ($ discriminatorClass )->getName ()) {
314- $ metadata ->discriminatorValue = $ discriminatorValue ;
313+ if ($ metadata ->discriminatorValue
314+ || ! $ metadata ->discriminatorMap
315+ || $ metadata ->isMappedSuperclass
316+ || $ metadata ->reflClass ->isAbstract ()
317+ ) {
318+ return ;
319+ }
315320
316- break ;
317- }
321+ foreach ($ metadata ->discriminatorMap as $ discriminatorValue => $ discriminatorClass ) {
322+ if ($ discriminatorClass === $ metadata ->name ) {
323+ $ metadata ->discriminatorValue = $ discriminatorValue ;
324+
325+ return ;
318326 }
327+ }
328+
329+ foreach ($ metadata ->discriminatorMap as $ discriminatorValue => $ discriminatorClass ) {
330+ if ($ metadata ->name === $ this ->getMetadataFor ($ discriminatorClass )->getName ()) {
331+ $ metadata ->discriminatorValue = $ discriminatorValue ;
319332
320- //throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
333+ return ;
334+ }
321335 }
336+
337+ throw MappingException::mappedClassNotPartOfDiscriminatorMap ($ metadata ->name , $ metadata ->rootEntityName );
322338 }
323339
324340 /**
You can’t perform that action at this time.
0 commit comments