/** * @param EventArgs $eventArgs * @return void */ public function loadClassMetadata(EventArgs $eventArgs) { $meta = $eventArgs->getClassMetadata(); $ea = $this->getEventAdapter($eventArgs); if (is_subclass_of($meta->getName(), $ea->getHierarchyClassName(), true)) { $ea->mapHierarchy($meta); } parent::loadClassMetadata($eventArgs); }
/** * Registered the postLoad calls for wanted classes * * @param EventArgs $event * @access public * @return void */ public function loadClassMetadata(EventArgs $event) { if ($event instanceof LoadClassMetadataEventArgs) { $className = $event->getClassMetadata()->getName(); $this->loadExternalAssociationByClassName($className); } elseif (method_exists($event, 'getObjectManager')) { $this->loadExternalAssociationByManager($event->getObjectManager()); } else { $msg = '$event must implements `Doctrine\\Common\\Persistence\\Event\\LoadClassMetadataEventArgs` ' . ' or have a `getObjectManager` method.'; throw new \InvalidArgumentException($msg); } }
/** * @param EventArgs $eventArgs */ public function loadClassMetadata(EventArgs $eventArgs) { $meta = $eventArgs->getClassMetadata(); if (!$meta->isRootEntity() || $meta->isInheritanceTypeNone() || $meta->subClasses || $meta->isMappedSuperclass) { return; } $ea = $this->getEventAdapter($eventArgs); $om = $ea->getObjectManager(); $name = $meta->getName(); $meta->subClasses = $this->getSubClasses($name, $om); $this->loadMetadataForObjectClass($om, $meta); }
/** * @param EventArgs $eventArgs */ public function loadClassMetadata(EventArgs $eventArgs) { /* @var $classMetadata ClassMetadata */ $classMetadata = $eventArgs->getClassMetadata(); // If the entity is a subclass with STI, it gets its already prefixed table from inherited class if (!$classMetadata->isInheritanceTypeSingleTable() || $classMetadata->getName() === $classMetadata->rootEntityName) { $classMetadata->setTableName($this->prefix . $classMetadata->getTableName()); } foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) { if ($mapping['type'] === ClassMetadataInfo::MANY_TO_MANY && !$classMetadata->isInheritedAssociation($fieldName) && isset($classMetadata->associationMappings[$fieldName]['joinTable']['name'])) { $mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name']; $classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix . $mappedTableName; } } }
/** * @param EventArgs $eventArgs */ public function loadClassMetadata(EventArgs $eventArgs) { $metadata = $eventArgs->getClassMetadata(); if ($metadata->isMappedSuperclass) { return; } $mappings = $metadata->getAssociationMappings(); $name = $metadata->getName(); if (!isset($mappings['metadata']) && in_array($this->targetEntity, class_implements($name))) { $reflClass = $metadata->getReflectionClass(); $namespace = $reflClass->getNamespaceName(); $classShortName = $reflClass->getShortName(); $metadata->mapOneToMany(['targetEntity' => "{$namespace}\\{$classShortName}Metadata", 'fieldName' => 'metadata', 'mappedBy' => 'object', 'orphanRemoval' => true, 'cascade' => ['persist', 'remove'], 'fetch' => 'EXTRA_LAZY']); } elseif (!isset($mappings['object']) && is_subclass_of($name, $this->sourceEntity)) { $namingStrategy = $eventArgs->getEntityManager()->getConfiguration()->getNamingStrategy(); $metadata->mapManyToOne(['targetEntity' => str_replace('Metadata', '', $name), 'fieldName' => 'object', 'inversedBy' => 'metadata', 'joinColumn' => ['name' => 'object_id', 'referencedColumnName' => $namingStrategy->referenceColumnName(), 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE']]); } }
/** * @param EventArgs $eventArgs */ public function loadClassMetadata(EventArgs $eventArgs) { $meta = $eventArgs->getClassMetadata(); if ($meta->isInheritanceTypeNone()) { return; } $className = $meta->getName(); if (!empty($this->discriminatorMaps[$className])) { foreach ($this->discriminatorMaps[$className] as $entry => $className) { if (in_array($className, $meta->discriminatorMap)) { $meta->discriminatorMap = array_diff($meta->discriminatorMap, [$className]); } $meta->discriminatorMap[$entry] = $className; if (!in_array($className, $meta->subClasses) && $className !== $meta->name) { $meta->subClasses[] = $className; } } } }